文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、对话框的概念
对话框是和用户简短交互的一种窗口。如:登录界面,关于界面,选择文件界面…
他不能放在在其他的Qt组件里面。
二、与QWidget的区别
我们可以在main.cpp中写下面的代码:
实验1:
#include<QApplication>#include<QDialog>intmain(int argc,char*argv[]){
QApplication a(argc, argv);
QWidget w;
QDialog d(&w);
w.setWindowTitle("QWidget");//设置该窗口标题
d.setWindowTitle("QDialog");
w.show();
d.show();return a.exec();}
我们可以看到,QDialog指定了父类,可还是出现了2个窗口,可以按正常逻辑,应该是出现一个窗口QWidget啊,可现在却出现了QDialog。
实验2:
#include<QApplication>#include<QDialog>intmain(int argc,char*argv[]){
QApplication a(argc, argv);
QDialog d;
QWidget w(&d);
w.setWindowTitle("QWidget");
d.setWindowTitle("QDialog");
w.show();
d.show();return a.exec();}
这次我们让QWidget放到QDialog里面,就会发现,只有QDialog。那么QWidget就被放在QDialog里面了,因为他和我们QDialog的颜色一样,所以看不到
三、对话框2种显示方法
1、使用exec()函数显示:模态对话框
特点:显示后无法与父窗口交互。是一种阻塞试的调用。
阻塞试是什么意思:必须要点关闭按钮/使用里面的一个函数,等下我们会讲。
使用场景:必须要用户选择
2、使用show()函数显示:非模态对话框
特点:显示后独立存在可以在同时与父组件交互。是一种非阻塞式的对话框方式
使用场景:和模态对话框相对的
小技巧:
模态对话框一般在栈上创建。
非模态对话框一般在堆上创建。
非模态对话框需要指定Qt::WA_DeleteOnClose。原因:因为无法得知他的关闭时间,他又是在堆上创建的,所以当我们指定了这个东西的时候,关闭时,他自动delete该窗口。
四、对话框返回值的概念
只有模态对话框才有返回值。
使用dene(int i)返回
一般使用下面两个作为参数:
QDialog::Accepted用户操作成功
QDialog::Rejectd用户操作失败
本节示例
使用Qt设计师类创建一个QDialog。
UI界面如下:
点击登录打印用户名和密码,点击取消退出.
提示:取消可使用槽函数close()
dialog.cpp
#include"dialog.h"#include"ui_dialog.h"#include<QDebug>Dialog::Dialog(QWidget *parent):QDialog(parent),ui(new Ui::Dialog){
ui->setupUi(this);connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(Login()));}voidDialog::Login(){qDebug()<< ui->lineEdit->text();qDebug()<< ui->lineEdit_2->text();}Dialog::~Dialog(){delete ui;}
dialog.h
#ifndefDIALOG_H#defineDIALOG_H#include<QDialog>namespace Ui {classDialog;}classDialog:publicQDialog{
Q_OBJECT
public:explicitDialog(QWidget *parent =0);~Dialog();private:
Ui::Dialog *ui;private slots:voidLogin();};#endif// DIALOG_H
版权归原作者 人才程序员 所有, 如有侵权,请联系我们删除。