QMainWindow,QWidget和QDialog有什么区别?

zib*_*bib 105 qt4 qt-creator qtwidgets

QMainWindow,QWidget和QDialog有什么区别?

Cal*_*itt 113

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

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

QMainWindow是围绕主窗口的常见需求而设计的.它为菜单栏,状态栏,工具栏和其他小部件预定义了位置.对于像QDialog这样的按钮,它没有任何内置的限制.

  • @Caleb_Huitt这就是我说的.如果这就是你要说的话,我想要澄清一下.无论如何,我建议总是使用QWidget而不是QMainWindow.您可能会遇到问题,例如设置另一个布局.如果你想在QMainWindow中设置一个新的布局,你必须创建一个QWidget并将其设置为QMainWin的中心窗口小部件,然后在QWidget中你可以设置setLayout(QLayout*).虽然你可以通过使用QWidget避免额外的麻烦.当然,QMainWindow提供了ToolBar和StatusBar的简单设置,但您可以在QWidget中自己完成... (8认同)
  • 我们希望使用 QMainWindow 而不仅仅是基类 QWidget 的一个原因是 QMainWindow 有 QDockWidget 支持而 QWidget 本身没有 (2认同)
  • @mLstudent33这听起来是一个很好的文档问题,如果这没有帮助,可以在这里作为主要问题而不是在评论中提出。一个示例(针对 Qt5)可以在 https://doc.qt.io/qt-5/qtwidgets-mainwindows-application-example.html 查看 (2认同)

小智 6

QWidget:是 QtWidgets 模块中所有其他 GUI 元素的基类。它可以自己构成一个窗口,或者是 QLayout 的一部分,或者只是父子层次结构的成员。

QDialog:通常用于 - 惊喜!- 当需要用户输入时显示一个临时对话框。

QMainWindow:是一个方便的类,可以用作应用程序的主窗口。它内置了一些不错的功能:状态栏、工具栏和菜单栏