Qt学习笔记——对话框

模态和非模态对话框

代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDialog"
#include "QDebug"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //点击新建按钮后 弹出对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //对话框 分类
        //模态对话框(不可以对其他窗口操作)  非模态对话框(可以对其窗口进行操作)

//        //模态创建
//        QDialog dlg(this);
//        dlg.resize(600,400);
//        dlg.exec();
//        //对话框×掉后才会打印
//        qDebug() << "对话框弹出了";

        //非模态创建
        //这种方式创建的对话框在匿名函数执行完成后就会自动关闭掉
        //QDialog dlg2(this)
        //使用new 的方式放入堆栈中,函数执行完也不会关闭
        //但是会存在问题就是一个人闲得无聊一直点击然后关闭,又不关闭主窗口,内存就不会释放掉,可能造成内存泄漏  需要使用setAttribute(Qt::WA_DeleteOnClose);
        QDialog *dlg2 = new QDialog(this);
        dlg2->resize(600,400);
        dlg2->show();
        //对话框关闭后释放掉对象
        dlg2->setAttribute(Qt::WA_DeleteOnClose);
        //对话框弹出后就会打印
        qDebug() << "非模态对话框弹出了";

    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行


标准对话框

Qt内置的标准对话框大致分为以下几类

QColorDialog 选择颜色
QFileDialog 选择文件或目录
QFontDialog 选择字体
QInputDialog 允许用户输入一个值,并将其值 返回
QMessageDialog 模态对话框,用于显示信息、询问问题等
QPageSetupDialog 为打印机提供纸张选项相关的选项
QPrintDialog 打印机配置
QPrintPreviewDialog 打印机预览
QProgressDialog 显示操作过程

自定义消息框

代码

        //消息对框框
        //错误对话框  参数1 父类    参数2 标题    参数3 显示信息
        QMessageBox::critical(this,"critical","错误");

        //信息对话框
        QMessageBox::information(this,"info","消息");

        //提问对话框   参数4 指定按钮显示  参数5 指定默认选中的按钮
        //QMessageBox::question(this,"ques","问题",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);
        if(QMessageBox::Save==QMessageBox::question(this,"ques","问题",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
        {
            qDebug() << "选择了保存";
        }
        else
        {
            qDebug() << "选择了取消";
        }

        //警告对话框
        QMessageBox::warning(this,"warn","警告");

运行


其他标准对话框

代码

        //其他标准对话框
        //颜色对话框  颜色参数默认是(255,0,0)红色
        QColor color = QColorDialog::getColor(QColor(255,0,0));
        qDebug() << "r=" << color.red() << "g=" << color.green() << "b=" << color.blue();

        //文件对话框
        //参数1 父亲    参数2 标题    参数3 默认打开的路径(不设置默认当前项目)  参数4过滤文件格式
        QString str = QFileDialog::getOpenFileName(this,"打开文件","E:/Qt_Study/bilibili","(*.txt)");
        qDebug() << str;

        //字体对话框
        bool flag;
        QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
        qDebug() << "字体:" << font.family().toUtf8().data() << "字号:" << font.pointSize() << "是否加粗:" << font.bold() << "是否倾斜:" << font.italic();

运行

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值