您的位置:首页 > 编程语言 > Qt开发

Qt窗口之QMainWindow、QDialog、QWidget

2016-05-15 21:31 351 查看
在 Qt 中,我们将窗口和控件统称为部件(Widget)。


窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等。


控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。


QWidget 是所有用户界面元素的基类,窗口和控件都是直接或间接继承自 QWidget,QMainWindow、QWidget、QDialog 三个类就是用来创建窗口的,可以直接使用也可以继承后再使用。


QMainWindow 窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,可以作为GUI程序的主窗口。



如下图所示:



QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或与用户进行互动,它可以是模态的也可以是非模态的。QDialog 没有菜单栏、工具栏、状态栏等。

如下图所示:



如果是主窗口,就使用 QMainWindow;如果是对话框,就是用 QDialog;如果不确定,或有可能作为顶级窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。

需要注意的是,窗口和控件都继承自 QWidget,如果不为控件指定父对象,它就会被作为窗口处理,这时 setWindowTitle() 和 setWindowIcon() 函数就会生效。

请看下面的代码:

#include <QApplication>
#include <QLabel>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label("这是Label控件");  //没有父对象
label.setWindowTitle("Label控件作为顶级窗口");
label.setGeometry(100, 50, 360, 160);
label.setAlignment(Qt::AlignCenter);
label.show();
QPushButton btn;  //没有父对象
btn.setWindowTitle("PushButton控件作为顶级窗口");
btn.setText("这是个大大的按钮");
btn.setGeometry(480, 50, 360, 160);
btn.show();
return app.exec();
}




运行代码,会在距离显示器 x=100, y=50 的位置弹出两个窗口,

如下图所示:



可以发现,窗口和控件没有绝对的区别,控件也可以成为窗口,这取决于它有没有父对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: