QT Creator快速入门读书笔记:窗口部件初探

在这里插入图片描述

QWidget基础窗口部件

Qt把没有嵌入到其他部件中的部件称为窗口,一般窗口都有边框和标题栏,就像程序中的widget和label一样。QMainWindow和大量的QDialog子类是最一般的窗口类型。窗口就是没有父部件的部件,所以又称为顶级部件。与其相对应的是非窗口部件,又称为子部件。在Qt中大部分部件被用作子部件,嵌入在别的窗口中。
在这里插入图片描述

对话框QDialog

模态对话框是在没有关闭它之前,不能再与同一个应用程序的其他窗口进行交互,而对于非模态对话框,既可以与它交互,也可以与同一程序中的其他窗口交互。要想使一个对话框成为模态对话框,则只需要调用它的exec函数,而使其称为非模态对话框,则可以使用new操作来创建,然后使用show函数显示。其实使用show函数也可以建立模态对话框,只须在其前面使用setModal函数。
与setModal函数相似的还有一个setWindowModality函数,它有一个参数来设置模态对话框要阻塞的窗口类型,可以是Qt::NonModal(不组赛任何窗口,就是非模态)、Qt::WindowModal(阻塞它的父窗口、所有祖先窗口以及它们的子窗口)或Qt::ApplicationModal(阻塞整个应用程序的所有窗口)。而setModal函数默认设置的是Qt::ApplicationModal。

//模态对话框
//运行,对话框弹出,但是QWidget基础窗口没有弹出,关闭对话框后,窗口才弹出
QDialog dialog(this); //this是QWidget指针
dialog.exec();

//运行后,对话框和基础窗口都弹出。因为调用show后控制权交给调用者,程序继续执行
QDialog *dialog = new QDialog(this);
dialog->setModal(true);
dialog->show();

//非模态对话框
QDialog *dialog = new QDialog(this);
dialog->show();
//为dialog指明了父窗口,没有必要用delete释放对象

QDialog小例子

在创建Qt Widgets Application项目时,选择QDialog为基类,默认勾选创建界面复选框,表示采用自带的界面设计器来设计界面。
新建的工程和上一节的所讲述的类继承结构相似。这里新建的类Dialog继承自QDialog和Ui_Dialog。这里不再进行详细介绍,直接使用设计师进行设计。
在这里插入图片描述
在计算按钮上单击鼠标右键,选择转到槽命令,并选择clicked信号,单击OK按钮。软件跳转到dialog.cpp文件中按钮单击事件的槽函数on_coutBtn_clicked(),在其中添加处理代码。
在这里插入图片描述
在这里插入图片描述
点击计算按钮,将会将计算的值输出到areaLabel_3控件。
在这里插入图片描述
Q_OBJECT宏的作用是启动Qt 5元对象系统的一些特性(如支持信号和槽等)。

信号和槽

Qt中使用信号和槽机制完成对象之间的协同操作。简单说,信号和槽都是函数,比如单击窗口上的一个按钮后想要弹出一个对话框,那么可以将这个按钮的单击信号和自定义的槽关联起来,在这个槽中创建一个对话框并且显示它。这样单击这个按钮就会发射信号,进而执行槽来显示一个对话框。
这里介绍采用编写代码的方式实现计算面积功能的代码和不使用上面的方法定义槽:
在这里插入图片描述
直接定义Dialog类继承QDialog,并定义控件指针。
在这里插入图片描述
这里自定义了一个槽,槽一般使用slots关键字进行修饰(Qt4中必须使用,Qt5使用新connect语法时可以不用)。这里使用private slots,表明这个槽不能再类外被调用。
在这里插入图片描述
这里使用connect函数将按钮的单击信号clicked与新建的槽进行关联。connect是QObject类中的函数,由于Dialog也继承自QObject,所以可以直接使用它。

当类被继承时,该类的信号和槽也同时被继承,也可以根据需要自定义信号和槽。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其他对话框

Qt提供了一些常用的对话框类型,它们全部继承自QDialog类,并增加了自己的特色功能,比如获取颜色、显示特定信息等。

颜色对话框

颜色对话框类QColorDialog提供了一个可以获取指定颜色的对话框部件。
在这里插入图片描述

文件对话框

文件对话框QFileDialog类提供了一个允许用户选择文件或文件夹的对话框。
在这里插入图片描述

字体对话框

字体对话框QFontDialog类提供一个可以选择字体的对话框部件。
在这里插入图片描述

输入对话框

输入对话框QInputDialog类用来提供一个对话框,可以让用户输入单一数值或字符串。
在这里插入图片描述

QFrame类

QFrame类是带有边框的部件的基类。它的子类包括最常用的标签部件QLabel,另外还有QLCDNumber、QSpliter、QStackedWidget、QToolBox和QAbstractScrolArea类。QAbstractScrolArea类是所有带滚动区域的部件类的抽象基类,这里需要说明,Qt中凡是带有Abstract字样的类都是抽象基类。抽象基类是不能直接使用的,但是可以继承该类实现自己的类,或者使用它提供的子类。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

QT Creator快速入门读书笔记:新建HelloWorld工程
QT Creator快速入门读书笔记:窗口部件初探

发布了134 篇原创文章 · 获赞 141 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/asmartkiller/article/details/103832493