对话框是与用户进行简短交互的顶层窗口QDialog是Qt中所有对话框窗口的基类QDialog继承于QWidget是一种容器类型的组件
QDialog的意义-QDialog作为一种专用的交互窗口而存在-QDialog不能作为子部件嵌入到其它容器中-QDialog是定制了窗口式样的特殊的QWidget
QDialog和QWidget的区别
1.QDialog的父组件为QWidget
#include <QApplication>
#include <QWidget>
#include <QDialog>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget widget;
QDialog dialog(&widget);
dialog.show();
dialog.setWindowTitle("I'm a dialog");
widget.show();
widget.setWindowTitle("I'm a widget");
return a.exec();
}
你不管怎样点击,I'm dialog始终是在最上面,说明对话框是一种顶层的窗口。
因为在程序中设置了对话框的父组件是QWidget,按理说QDialog应该嵌入到QWidget中,但是运行结果并没有,因为对话框不能作为子部件嵌入到其它容器中。
Qdialog和QWidget在显示上也有所差别,最大化和最小化按钮
2.QDialog作为QWidget的父组件
#include <QApplication>
#include <QWidget>
#include <QDialog>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDialog dialog;
QWidget widget(&dialog);
dialog.show();
dialog.setWindowTitle("I'm a dialog");
widget.show();
widget.setWindowTitle("I'm a widget");
return a.exec();
}
从运行结果上好像只看到了对话框的显示,实际上QWidget作为一个子部件嵌入到了QDialog中,在这里只是看不见而已。