Qt第六章对话框

这篇具有很好参考价值的文章主要介绍了Qt第六章对话框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第六章QDialog(Layouts)

  • 模态对话框:在弹出对话框时,除了该对话框整个应用程序窗口都无法接受用户响应,处于等待状态,直到对话框关闭
  • 非模态对话框:又叫无模式对话框,即弹出非模态对话框时,用户仍然可以对其他窗口进行操作
  • 半模态对话框:介于模态和非模态之间,会阻塞窗口的响应,但不影响后续代码的执行
#include <QDialog>
    QDialog dialog;
    // dialog.exec(); // 模态显示
    // dialog.show(); // 非模态显示
    dialog.open(); // 半模态显示
    qDebug() << "dialog";

QDialogButtonBox

#include <QDialogButtonBox>
#include <QPushButton>
    auto dialogbox = new QDialogButtonBox; // 如果不添加对象,show不显示窗口

    dialogbox->addButton(QDialogButtonBox::Ok);
    dialogbox->addButton("取消", QDialogButtonBox::RejectRole);
    dialogbox->addButton(new QPushButton("保存"), QDialogButtonBox::AcceptRole);

    dialogbox->setOrientation(Qt::Vertical); // 按钮修改为垂直排列(默认是水平排列的)

    QObject::connect(dialogbox, &QDialogButtonBox::accepted, [=] {
        qInfo() << "接受";
        dialogbox->close(); }); // 点击ok和保存都会触发接受,因为都是AcceptRole
    QObject::connect(dialogbox, &QDialogButtonBox::rejected, [] { qInfo() << "拒绝"; });
    
    //设置窗口关闭时自动释放对象
    dialogbox->setAttribute(Qt::WA_DeleteOnClose); // 使用这个属性,对象必须是堆区自己new的,否则会引发中断

    dialogbox->show();

QMessageBox

#include <QMessageBox>
    QMessageBox* msgBox = new QMessageBox;
    msgBox->setText("今天天气不错");
    msgBox->setIcon(QMessageBox::Warning); // 显示一个系统图标
    msgBox->exec(); // 模态对话框,这个点了之后才能执行后面的

    // 上面的功能也可以通过静态函数做到
    QMessageBox::about(nullptr, "静态", "今天天气不错"); // 效果如上,都是模态的
    QMessageBox::aboutQt(nullptr); // 显示一个Qt的说明对话框

    QMessageBox::information(nullptr, "模态", "又是一个好天气"); // 返回一个QMessageBox::StandardButton
    auto sBtn = QMessageBox::information(nullptr, "sbtn", "standard", QMessageBox::Cancel, QMessageBox::Yes);
    if (sBtn == QMessageBox::Cancel)
        qInfo() << "取消"; // 点击cancel就会触发这个信号
    else
        qInfo() << "继续";

    QMessageBox::critical(nullptr, "", "好天气+1"); // 错误对话框
    QMessageBox::warning(nullptr, "", "坏天气"); // 警告对话框
    QMessageBox::question(nullptr, "", "今天天气怎么样?"); // 问题对话框

QFileDialog

#include <QFileDialog>
    QFileDialog* flDialog = new QFileDialog(nullptr, "标题", "./"); // 打开当前文件对话框,没有过滤器的时候显示AllFile(*)
    flDialog->exec();

    // 也可以用静态函数
    QString path = QFileDialog::getExistingDirectory(nullptr, "", "./"); // 返回选择文件的路径
    if (!path.isEmpty())
        qInfo() << path; // 当选中文件,点击选择文件夹时触发信号,点取消,就返回空
    // 也可以获取文件路径
    QString filePath = QFileDialog::getOpenFileName(nullptr, "", "./", "image(*.jpg *.png);;file(*.c *.cpp)");
    qInfo() << filePath;
    // 获取多个文件
    auto files = QFileDialog::getOpenFileNames(nullptr, "", "./", "image(*.jpg *.png);;file(*.c *.cpp)"); // 返回Qstringlist
    for (auto f : files) {
        qInfo() << f;
    }
    // 返回用户保存的文件,文件名可以不存在,不存在则创建
    auto savefile = QFileDialog::getSaveFileName();
    qInfo() << savefile;

QFontDialog

  • 通过QFont设置字体
#include <QPainter>
#include <QWidget>

class Widget : public QWidget {
    Q_OBJECT

public:
    Widget(QWidget* parent = nullptr);
    ~Widget();

protected:
    void paintEvent(QPaintEvent* event) override;
};

Widget::Widget(QWidget* parent)
    : QWidget(parent)
{
    QFont font;
    font.setBold(true); // 粗体
    font.setPointSize(30); // 设置点的大小
    font.setItalic(true); // 斜体
    font.setFamily("Arial");

    setFont(font); // 设置当前字体
}
void Widget::paintEvent(QPaintEvent* event)
{
    QPainter p(this);
    p.drawText(50, 50, "这就是我选择的字体");
}
  • 也可以通过对话框设置字体
#include <QFontDialog>
	//构造函数设置字体
    auto fontDialog = new QFontDialog(font, this);
    // fontDialog->show();

    // 或者静态成员设置字体
    bool ok;
    // QFont f = QFontDialog::getFont(&ok, font, this, "fontDialog静态成员");
    QFont f = QFontDialog::getFont(&ok, this); // 同上
    if (ok) {
        qInfo() << "选择了新字体:" << f.family();
        this->setFont(f);
    } else {
        qInfo() << "没选择,当前字体:" << font.family();
        this->setFont(font);
    }

QColorDialog

    // QColor类颜色定义
#include <QColor>
#include <QColorDialog>    
    QColor c(20, 34, 50);
    QColor c1("#3e99da");
    QColor c2;
    c2.setRed(10);
    c2.setGreen(20); // 设置红绿蓝,不设置就是0
    qInfo() << c << c1 << c2;

    // 颜色对话框,构造函数
    auto colorDialog = new QColorDialog(c, this);
    colorDialog->show();
    connect(colorDialog, &QColorDialog::colorSelected, [](QColor c) {
        qInfo() << c;
    });
    // 静态函数
    auto newcolor = QColorDialog::getColor(c, this, "选择颜色");
    qInfo() << newcolor; // 按OK,返回新的颜色,按取消,返回无效颜色

QInpuDialog

#include <QInputDialog>
    // 输入浮点数对话框
    bool ok;
    double dnum = QInputDialog::getDouble(this, "提示", "请输入浮点数", 100, 0, 999999, 2, &ok, Qt::Dialog, 10);
    // 初始值100,范围0到999999,2位小数,步长为10(上下箭头一次调整10)
    if (ok)
        qInfo() << "新的值" << dnum;
    else
        qInfo() << "还是原来的值" << dnum;

    // 输入整数对话框
    int inum = QInputDialog::getInt(this, "提示", "请输入整数");
    qInfo() << inum;

    QStringList strlist;
    strlist << "学生"
            << "萝莉"
            << "御姐";
    qInfo() << QInputDialog::getItem(this, "提示", "Item", strlist);  

    qInfo() << QInputDialog::getText(this, "", ""); // 输入文本,按OK,返回输入的文本

QProgressDialog

    // 进度对话框
#include <QProgressDialog>
#include <QTimer>
    auto pgDialog = new QProgressDialog("正在发送", "取消发送", 0, 100, this);
    pgDialog->show();
    // 设置信号和槽
    QTimer* timer = new QTimer(this);
    timer->start(100);
    connect(timer, &QTimer::timeout, [=] {
        static int a = 0;
        pgDialog->setValue(a++);
    });
    connect(pgDialog, &QProgressDialog::canceled, timer, &QTimer::stop);

QErrorMessage

#include <QErrorMessage>
#include <QPushButton>
    auto errMsg = new QErrorMessage(this);
    auto btn = new QPushButton(this);
    connect(btn, &QPushButton::clicked, [=] {
        errMsg->showMessage("来了,老弟");
        errMsg->showMessage("是的", "1");
        errMsg->showMessage("是的", "2"); // 设置type,就可以和上面的区别开来,取消勾选任意一个,不影响另一个的出现
        errMsg->showMessage("不是");
        errMsg->showMessage("不是"); // 如果不设置,和上面是同一个,取消勾选任意一个,下次2个都不会出现
    });

文章来源地址https://www.toymoban.com/news/detail-851554.html

到了这里,关于Qt第六章对话框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt应用开发(基础篇)——对话框窗口 QDialog

            QDialog 类继承于QWidget,是Qt基于对话框窗口(消息窗口 QMessageBox 、颜色选择窗口 QColorDialog 、文件选择窗口 QFileDialog 等)的基类。           QDialog 窗口是顶级的窗口,一般情况下,用来当做用户短期任务(确认、输入、选择)或者和用户交流(提示、错误、警告、进

    2024年02月10日
    浏览(53)
  • Qt5开发及实例V2.0-第四章Qt基本对话框

    首先介绍标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框(QFontDialog)、标准输入对话框(QInputDialog)及标准消息对话框(QMessageBox),运行效果如图4.1所示。 按如图4.1所示依次执行如下操作。 (1)单击“文件标准对话框实例”按钮,弹出“文

    2024年02月07日
    浏览(104)
  • Qt应用开发(基础篇)——文件选择对话框 QFileDialog

             QFileDialog 类继承于 QDialog ,提供了一个允许用户选择文件或目录的对话框。         对话框窗口 QDialog          QFileDialog 文件选择对话框允许用户在当前文件系统中选择一个或者多个文件或者文件路径,使用静态函数创建是很简便的方式,比如:      

    2024年02月09日
    浏览(47)
  • 06-1_Qt 5.9 C++开发指南_对话框与多窗体设计_标准对话框

    在一个完整的应用程序设计中,不可避免地会涉及多个窗体、对话框的设计和调用,如何设计和调用这些对话框和窗体是搞清楚一个庞大的应用程序设计的基础。本章将介绍对话框和多窗体设计、调用方式、数据传递等问题,主要包括以下几点。 Qt 提供的标准对话框的使用,

    2024年02月13日
    浏览(50)
  • 06-2_Qt 5.9 C++开发指南_自定义对话框及其调用

    本篇介绍到的对话框及其调用实例较为复杂但十分详细,如果做了解可以先参考:QT从入门到实战x篇_13_模态和非模态对话框创建。 在一个应用程序设计中,为了实现一些特定的功能,必须设计自定义对话框。自定义对话框的设计一般从QDialog 继承,并且可以采用 UI 设计器可

    2024年02月13日
    浏览(46)
  • Qt对话框——QInputDialog输入对话框

    Qt对话框——QInputDialog输入对话框 在Qt开发中,我们有时需要通过一个对话框获取用户的输入,而QInputDialog就是Qt框架提供的一种方便地弹出输入对话框并获取用户输入数据的方式。 QInputDialog使用非常简单,我们可以通过访问不同的接口来弹出输入对话框获取多种类型的返回

    2024年02月12日
    浏览(48)
  • Qt标准对话框:8大对话框详解

    颜色对话框类 QColorDialog 提供了一个可以获取指定颜色的对话框的对话框部件: 这里使用 QColorDialog 的静态函数 getColor () 来获取颜色,执行时弹出颜色选择对话框: 返回的是一个 QColor 类型的数据: 这四个数值分别代表:透明度(alpha)、Red、Green、Blue。它们的默认值都是

    2024年02月03日
    浏览(58)
  • 【Qt】对话框QDialog类,模态对话框和非模态对话框

    QDialog类是所有对话框窗口类的基类。对话框窗口是一个用来完成短小任务或和用户进行简单交互的 顶层窗口 。 按照运行对话框时是否还可以和该程序的其它窗口进行交互,将它分为两类:模态(modal)对话框和非模态(modaless)对话框。 模态对话框 先看一个例子: 创建一

    2024年02月05日
    浏览(58)
  • 【Qt】:对话框(二)

    Q提供了多种可复用的对话框类型,即Qt标准对话框。Qt标准对话框全部继承于QDialog类。常用标准对话框如下: 消息对话框是应用程序中最常用的界面元素。消息对话框主要用于为用户提示重要信息,强制用户进行选择操作。 QMessageBox自己内置了一些图标和按钮,我们可以直接

    2024年04月16日
    浏览(61)
  • Qt对话框

    颜色对话框: 字体对话框: 输入对话框: 消息对话框:

    2024年02月06日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包