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

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

一、对话框

界面布局

首先在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总结


相关文章
|
3月前
|
开发者
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
202 4
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
240 3
|
3月前
【qt】自定义对话框(2)
【qt】自定义对话框(2)
24 0
|
3月前
【qt】自定义对话框(1)
【qt】自定义对话框(1)
32 0
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
181 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
88 0
|
2月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
|
2月前
|
3月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
151 2

推荐镜像

更多