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
相关文章
|
5月前
|
Linux iOS开发 MacOS
19 QT - 标准文件对话框
19 QT - 标准文件对话框
30 0
|
3月前
Qt6学习笔记五(自定义对话框、QMessageBox、QColorDialog、QFileDialog、QFontDialog)
Qt6学习笔记五(自定义对话框、QMessageBox、QColorDialog、QFileDialog、QFontDialog)
41 0
|
5月前
15 QT - 对话框QDialog概述
15 QT - 对话框QDialog概述
20 0
|
2月前
|
存储
QT基础入门——QMainWindow与对话框QDialog(三)
QT基础入门——QMainWindow与对话框QDialog(三)
52 0
QT基础入门——QMainWindow与对话框QDialog(三)
|
4月前
|
数据安全/隐私保护
QT基础教程(对话框2)
QT基础教程(对话框2)
32 0
|
4月前
QT基础教程(对话框1)
QT基础教程(对话框1)
33 0
|
4月前
|
C++
C++ Qt开发:自定义Dialog对话框组件
在之前的文章中笔者已经为大家展示了默认`Dialog`组件的使用方法,虽然内置组件支持对数据的输入,但有时候我们需要一次性输入多个数据,此时如果之使用默认模态对话框似乎不太够用,此时我们需要自己创建一个自定义对话框,需要说明的是此类对话框也是一种窗体,所以可以在其上面放置任何通用组件,以实现更多复杂的开发需求。自定义对话框需要解决的问题是,如何让父窗体与子窗体进行数据交换,要实现数据的交换有两种方式,第一种方式是通过动态加载模态对话框,当用户点击确定后通过`GetValue()`来拿到数据,而第二种方式则是通过发送信号的方式将数据投递给父窗体,这两种方式都可以,读者可根据自身需求来选择不同的通
39 1
C++ Qt开发:自定义Dialog对话框组件
|
4月前
|
数据安全/隐私保护 C++ 开发者
C++ Qt开发:标准Dialog对话框组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍标准对话框`QInputDialog`、`QFileDialog `这两种对话框组件的常用方法及灵活运用。在 Qt 中,标准对话框提供了一些常见的用户交互界面,用于执行特定任务,例如获取用户输入、选择文件路径、显示消息等。这些对话框通常具有标准化的外观和行为,使得在不同的平台上能够保持一致性。在一般的开发过程中,标准对话框是开发者常用的工具之一。
50 1
C++ Qt开发:标准Dialog对话框组件
|
5月前
|
API
18 QT - 消息对话框
18 QT - 消息对话框
24 0
|
5月前
16 QT - 标准对话框
16 QT - 标准对话框
19 0

热门文章

最新文章

推荐镜像

更多