Qt入门---自定义对话框 标准对话框

自定义对话框

分类 模态与非模态 区别在于模态对话框不允许用户同时再对其他窗口进行操作  

c++内存详解:一文详解堆栈(二)——内存堆与内存栈_堆和栈在内存中的样子-CSDN博客

    //创建连接 点击新建 弹出对话框
    connect(ui->actionnew, &QAction::triggered, this, [=](){
        //模态对话框创建
//        QDialog dlg(this);
//        dlg.resize(300, 200);
//        dlg.exec();

//        qDebug() << "对话框已结束";
        
        //非模态对话框创建 
        QDialog dlg(this);//该对象保存在栈上 离开作用域该对象会自动销毁 因此show只会展示很短暂的时间
        QDialog * dg = new QDialog(this);//new的对象保存在堆上 除非手动释放该对象 否则不会消失
        //设置对象的属性 点击对话框关闭 会自动释放对象 空出内存
        //如果在创建对象后不选择释放 根据对象树机制 会在关闭主窗口后依次释放
        //存在内存泄漏风险 即不关闭主窗口 重复点击新建 创建一堆对象不释放
        dg->setAttribute(Qt::WA_DeleteOnClose);
        dlg.show();
        dg->show();
    });

系统提供的标准对话框

一般包含: QColorDialog 选择颜色        QFileDialog 选择文件或目录        QFontDialog 选择字体

        QInputDialog 允许用户输入一个值并将该值返回        QMessageBox 模态对话框

        QPageSetupDialog 为打印机提供纸张相关的选项        QPrintDialog 打印机配置

        QPrintPreviewDialog 打印预览        QProgressDialog 显示操作过程

最常用的为模态对话框 QMessageBox 下边是它包含的几个静态成员函数 可直接调用

带返回值的四个对话框 形参依次是父类对象 标题 内容文本 按键类型(非必须 有默认值) 关联回车的按键(非必须 有默认值)  

Qt入门---自定义对话框 标准对话框_第1张图片

返回值是用户点击的按键类型  以下是部分按键类型  这些按钮属于QMessageBox提供的枚举值

Qt入门---自定义对话框 标准对话框_第2张图片 

QMessageBox::question(this, "提示", "是否结束", QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Cancel);

样例展示

Qt入门---自定义对话框 标准对话框_第3张图片

还可以通过该成员函数的返回值做判断来实现一些功能

if(QMessageBox::question(this, "提示", "是否结束", QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Cancel)
            == QMessageBox::Save){
            qDebug() << "用户点击的是保存";
        }

其他对话框

颜色对话框

QColor color = QColorDialog::getColor();

点击后弹出   返回值为用户所选取的颜色值  可以用QColor类来接收

Qt入门---自定义对话框 标准对话框_第4张图片

选择文件或目录对话框

参数介绍 父类对象 标题 要打开文件的路径 过滤器(只展示特定格式的文件)

QString str = QFileDialog::getOpenFileName(this, "打开文件", "D:\\", "(*.txt)");

运行展示 选中文件后会返回选中文件的绝对路径

Qt入门---自定义对话框 标准对话框_第5张图片

筛选后的文件展示

Qt入门---自定义对话框 标准对话框_第6张图片

选择字体对话框

返回用户选中的字 包含字体 大小 是否加粗倾斜等具体配置

flag用于接收用户是否选中字体 点击ok键 flag为true 否则为false

bool flag;
QFont font = QFontDialog::getFont(&flag, this);

Qt入门---自定义对话框 标准对话框_第7张图片

你可能感兴趣的:(QT入门,qt,开发语言)