Qt窗口、子部件和窗口类型
程序员文章站
2022-05-30 17:31:08
...
一、窗口与子部件
打开Qt Creator,新建空的qmake项目,项目名为mywidget,完成后在mywidget.pro中添加“QT += widgets”.
然后往项目中添加C++源文件(C++ Source File)main.cpp,并添加以下代码:
#include<QtWidgets> //下面用到的QApplication、QWidget等类都包含在QtWidgets模块中
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
QWidget *widget = new QWidget(); //新建QWidget类对象,默认parent参数是0,所以他是个窗口;堆上分配内存
widget->setWindowTitle(QObject::tr("我是widget")); //设置窗口标题
QLabel *label = new QLabel(); //新建QLabel对象,默认praent参数是0,所以他是个窗口;堆上分配内存
label->setWindowTitle(QObject::tr("我是label")); //设置窗口标题
label->setText(QObject::tr("label:我是个窗口")); //设置要显示的信息
label->resize(180,20); //改变部件大小,以便能显示出完整的内容
QLabel *label2 = new QLabel(widget); //label2指定了父窗口为widget,所以不是窗口;堆上分配内存
label2->setText(QObject::tr("label2:我不是独立窗口,只是widget的子部件")); //设置要显示的信息
label2->resize(250,20); //改变部件大小,以便能显示出完整的内容
label->show(); //在屏幕上显示
widget->show();
int ret = a.exec(); //堆上,必须这样做
delete widget; //销毁释放widget父窗口时,就会自动释放子对象label2
delete label;
return ret; //堆上必须这样返回
}
二、窗口类型
前面讲到的窗口一般都有边框和标题栏,其实这个不是必须的。QWidget的构造函数有两个参数:QWidget *parent = 0和QT::WindowFlags f = 0,前面的parent是父窗口部件,默认值是0,表明没有父窗口;而后的f参数是QT::WindowFlags 类型的,是Qt::WindowType枚举类型值的或组合。
Qt::WindowType包含了很多类型,Qt::Dialog、Qt::SplashScreen等均为其类型。
更改1:
QWidget *widget = new QWidget(0,Qt::Dialog);
QLabel *label = new QLabel(0,Qt::SplashScreen);
分析:一个是对话框类型,一个是欢迎窗口类型更改2:
QWidget *widget = new QWidget(0,Qt::Dialog | Qt::FramelessWindowHint);
QLabel *label = new QLabel(0,Qt::SplashScreen | Qt::WindowStaysOnTopHint);
分析:Qt::FramelessWindowHint用来产生一个没有边框的窗口,而Qt::WindowStaysOnTopHint用来使该窗口停留在所有其他窗口上面。单击Qt Creator,只有widget窗口隐藏到了后面,label窗口依然在最上面。
推荐阅读
-
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
-
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
-
C#中父窗口和子窗口之间控件互操作实例
-
python3+PyQt5+Qt Designer实现堆叠窗口部件
-
C++框架_之Qt的窗口部件系统的详解-上
-
vs2010怎么修改QT窗口图标和名称?
-
Python qt5编写第三个gui---由主窗口弹出子窗
-
qt5.11如何设置窗口左上角图标和任务栏图标
-
python3+PyQt5+Qt Designer实现堆叠窗口部件
-
Qt 杂谈 —— Qt中捕获某个窗口的停用和**的消息处理不同情况 —— Activate & Deactivate