关于Qt中窗口部件的学习
今天开始学习Qt的窗口部件,领略一下Qt的神奇之处,记得2012年的那年冬天,我还学Java呢,现在基本上和Java说再见了,不过对于嵌入式的开发Qt还是举足轻重的,我想趁着假期的时间,好好学习。考研之后发现一个问题,无论当初你学的有多明白,总会忘记,最好的方法就是将他们记录下来,甚至写下你当时的心情,如果有一天你需要了,回过头来看看,是一笔不错的财富。
1. QDialog类对话框
1.1 模态和非模态对话框
对于对话框,有模态(modal)和非模态(modeless)之分。模态对话框就是,对话框一出的时候,你不能点击对话框后面的面板了。非模态就是对话框出的时候,可以点击后面的面板。下面代码就是如何设定的。
1 #include "widget.h" 2 #include "ui_widget.h" 3 #include <QDialog> 4 #include <QDebug> 5 6 Widget::Widget(QWidget *parent) : 7 QWidget(parent), 8 ui(new Ui::Widget) 9 { 10 ui->setupUi(this); 11 // *建立一个QDialog对象,把这个对象设定在这个Widget里面 12 // *这个对象目标建立一个:模态对话框(不能点击其他应用部分) 13 QDialog *dialog1 = new QDialog(this); 14 dialog1->setWindowTitle("DIALOG-1"); 15 // ** 调动dialog的方法,setModal(),给定参数为布尔类型的值 16 // ** 如果是true建立一个模态对话框,如果是false建立一个非模态对话框 17 dialog1->setModal(false); 18 // ** 等效以下方法调动setWindowModality() 19 // ** 给定参数: 20 // ** 1. Qt::ApplicationModal ====> 阻塞整个应用程序(与setModal(true)效果同) 21 // ** 2. Qt::WindowModal ====> 阻塞他的父窗口和祖先窗口和它的子窗口 22 // ** 3. Qt::NonModal ====> 不阻塞任何窗口 23 // dialog1->setWindowModality(Qt::ApplicationModal); 24 25 // *建立一个QDialog对象的另一种方法 26 27 QDialog dialog2(this); 28 dialog2.setWindowTitle("DIALOG-2"); 29 dialog2.exec(); // 和show的区别是,这个需要关闭才能返回 30 // 而变量定义法和指针定义法区别在于,变量定义法会被释放掉。 31 // 如果利用dialog2.show();将会一闪而过! 32 33 dialog1->setWindowModality(Qt::ApplicationModal); 34 dialog1->show(); 35 36 } 37 38 Widget::~Widget() 39 { 40 delete ui; 41 }
时间: 2024-10-15 02:56:48