Qt之对话框(QDialog)

简介: Qt之对话框(QDialog)

提示:以下是本篇文章正文内容,下面案例可供参考

一、对话框的概念

对话框是和用户简短交互的一种窗口。如:登录界面,关于界面,选择文件界面…

他不能放在在其他的Qt组件里面。

二、与QWidget的区别

我们可以在main.cpp中写下面的代码:

实验1:

#include <QApplication>
#include <QDialog>
int main(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>
int main(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界面如下:

069840c8171143eeabfe4a6d3f23c63c.png

点击登录打印用户名和密码,点击取消退出.

提示:取消可使用槽函数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()));
}
void Dialog::Login()
{
    qDebug() << ui->lineEdit->text();
    qDebug() << ui->lineEdit_2->text();
}
Dialog::~Dialog()
{
    delete ui;
}

dialog.h

#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
    Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
private:
    Ui::Dialog *ui;
private slots:
    void Login();
};
#endif // DIALOG_H
相关文章
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
570 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
693 4
|
3月前
|
数据安全/隐私保护
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
354 4
|
3月前
|
搜索推荐 C++
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
73 4
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
239 3
|
3月前
|
数据可视化
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
77 3
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
512 3
|
3月前
【qt】自定义对话框(2)
【qt】自定义对话框(2)
24 0
|
3月前
【qt】自定义对话框(1)
【qt】自定义对话框(1)
30 0

推荐镜像

更多