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总结


相关文章
|
2月前
(8)Qt中的自定义信号
本文介绍了如何在Qt框架中创建和使用自定义信号,并通过一个父子窗口切换的示例来展示自定义信号的实现和应用。
104 3
(8)Qt中的自定义信号
|
2月前
(7)Qt中的自定义槽(函数)
这篇文章介绍了在Qt中如何定义和使用自定义槽函数,包括类成员函数、静态类成员函数、全局函数和lambda表达式作为槽函数的示例,以及使用lambda表达式时的注意事项。
67 2
(7)Qt中的自定义槽(函数)
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
869 4
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
317 3
|
4月前
|
数据可视化
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
102 3
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
656 3
|
4月前
【qt】自定义对话框(2)
【qt】自定义对话框(2)
32 0
|
4月前
【qt】自定义对话框(1)
【qt】自定义对话框(1)
39 0
|
5月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
199 1
Qt(C++)开发一款图片防盗用水印制作小工具