2010-07-21 44 views

回答

81

A QWidget是Qt中所有可绘制类的基类。任何基于QWidget的类都可以通过在没有父项时显示它来显示窗口。

A QDialog基于QWidget,但设计为显示为窗口。它将始终显示在一个窗口中,并具有使其能够与对话框上的常用按钮(接受,拒绝等)良好协作的功能。

QMainWindow是围绕主窗口的共同需求而设计的。它具有菜单栏,状态栏,工具栏和其他小部件的预定义位置。它没有像QDialog那样的按钮的任何内置配额。

+0

我搜索了这个问题,但那不是我正在等待的答案。在QtDesigner中使用QMainWindow给你一个菜单栏和一个状态栏。当你自己编写代码并使用QMainWindow时,你没有这些东西。或者你说你可以做一些像window.addToolBar(“Toolbar”);它会把它放在一个预定义的地方而没有任何其他的头痛? – 2012-10-24 21:56:08

+0

@MoraruLilian:我实际上并没有使用QMainWindow,所以我不知道详情。正如我在我的回答中所说的,我知道它有适合他们的地方,所以在代码中做它可能就像你说的那样简单。 – 2012-10-25 17:31:22

+5

@Caleb_Huitt它的确如我所说。我想清楚,如果这就是你想说的话。无论如何,我会建议总是使用QWidget而不是QMainWindow。您可能会遇到问题,例如设置另一个布局。如果你想在QMainWindow中设置一个新的布局,你将不得不创建一个QWidget并将它设置为QMainWin的一个中心部件,然后在QWidget中你可以setLayout(QLayout *)。尽管使用QWidget可以避免额外的麻烦。当然,QMainWindow提供了ToolBar和StatusBar的简单设置,但你可以在QWidget中自己完成... – 2012-11-05 01:00:46