Qt6学习笔记五(自定义对话框、QMessageBox、QColorDialog、QFileDialog、QFontDialog)

14 篇文章 10 订阅

一、对话框

界面布局

首先在ui界面,菜单栏里面创建菜单:文件和编辑
在文件菜单下,创建action: 新建
在这里插入图片描述
目的是为 点击新建,弹出对话框

实现对话框(自定义对话框)

mianwindows.cpp

首先进行信号槽连接,新建->弹出对话框
然后分别是
模态对话框:通过exec进行阻塞,实现这种效果。内存创建在栈区中,事件结束会自动释放。
非模态对话框:通过show进行显示,但是点击事件结束后,会一闪而过。因此要创建在堆区。为了防止内存泄漏,在点击对话框关闭按钮,要自动释放堆区空间(Qt::WA_DeleteOnClose)。

#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(200,100);//调整对话框大小
        dlg.exec();//进行阻塞(进行消息循环)
        qDebug()<<"Model dialog pops up";


        //非模态对话框创建
        QDialog *dlg2 = new QDialog(this);//要放到堆上,不然由于没有阻塞,会一闪而过。
        dlg2->show();
        dlg2->setAttribute(Qt::WA_DeleteOnClose);//如果点击了关闭按钮,会自动释放空间(看setAttribute文档),(不然的话,用户一直点击新建,就会出现内存泄漏)
        qDebug()<<"Non-model dialog pops up";

    });
}

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

在这里插入图片描述

二、标准对话框:消息对话框QMessageBox

首先载入头文件

#include<QMessageBox>

用QMessageBox的静态成员函数 创建对话框

在这里插入图片描述

/*消息对话框*/

//错误对话框
QMessageBox::critical(this,"critical","错误");

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

//提问对话框(参数1:父亲, 参数2:标题, 参数3:提示内容, 参数4:按键类型, 参数5:默认关联回车按键   返回值:点击的按钮的枚举值(也可以换成int类型))
QMessageBox::StandardButton ans = QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);
if(ans==QMessageBox::Save) qDebug()<<"chose to save";
else qDebug()<<"save to cancel";

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

在这里插入图片描述

三、其他标准对话框

在这里插入图片描述

3.1颜色对话框QColorDialog

头文件

#include<QColorDialog>

根据选择的颜色,返回Qcolor的值

//颜色对话框
QColor color = QColorDialog::getColor(QColor(255,0,0));//默认用红色打开
qDebug()<<"r="<<color.red()<<" g="<<color.green()<<" b="<<color.blue();

3.2文件对话框QFileDialog

头文件

#include<QFileDialog>

选择文件,然后获取文件路径

//文件对话框(参数1:父亲, 参数2:标题, 参数3:默认打开路径, 参数4:过滤文件格式   返回值:选取的路径)
QString path = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\xuheding\\Desktop","(*.txt)");
qDebug()<<path;

3.3字体对话框QFontDialog

头文件

#include<QFontDialog>

选择字体,返回字体QFont

//字体对话框
bool flag;
QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));//默认以华文彩云,36号字体打开。(具体有哪些字体,看系统带了哪些)
qDebug()<<"字体:"<<font.family()<<"字号:"<<font.pointSize()<<"是否加粗"<<font.bold()<<"是否倾斜"<<font.italic();

3.4总结

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菊头蝙蝠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值