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


相关文章
|
1月前
|
存储 机器学习/深度学习 人工智能
Qt魔法书:打造自定义鼠标键盘脚本(二)
Qt魔法书:打造自定义鼠标键盘脚本
35 0
|
3月前
QT自定义信号,信号emit,信号参数注册
使用signals声明返回值是void在需要发送信号的地方使用emit 信号名字(参数)进行发送在需要链接的地方使用connect进行链接ct进行链接。
19 0
QT自定义信号,信号emit,信号参数注册
|
3月前
Qt提升控件类为自定义类
Qt提升控件类为自定义类
|
4月前
|
搜索推荐 C++ 索引
C++ Qt开发:QItemDelegate自定义代理组件
在Qt中,`QStyledItemDelegate` 类是用于创建自定义表格视图(如`QTableView`和`QTableWidget`)的委托类,允许你自定义表格中每个单元格的外观和交互。`QStyledItemDelegate` 是`QItemDelegate` 的子类,提供了更现代、更易用的接口。此处我们将实现对`QTableView`表格组件的自定义代理功能,例如默认情况下表格中的缺省代理就是一个编辑框,我们只能够在编辑框内输入数据,而有时我们想选择数据而不是输入,此时就需要重写编辑框实现选择的效果,代理组件常用于个性化定制表格中的字段类型。
37 0
C++ Qt开发:QItemDelegate自定义代理组件
|
1月前
|
开发框架 Linux API
Qt魔法书:打造自定义鼠标键盘脚本(一)
Qt魔法书:打造自定义鼠标键盘脚本
23 0
|
1月前
使用代码实现QT自定义布局
使用代码实现QT自定义布局
|
2月前
|
存储
QT基础入门——QMainWindow与对话框QDialog(三)
QT基础入门——QMainWindow与对话框QDialog(三)
52 0
QT基础入门——QMainWindow与对话框QDialog(三)
|
3月前
Qt6自定义QML控件的方式
Qt6自定义QML控件的方式
69 1
|
3月前
|
Ubuntu iOS开发 MacOS
Qt5标题栏自定义QHeaderView自定义
Qt5标题栏自定义QHeaderView自定义
93 0
|
4月前
|
数据安全/隐私保护
QT基础教程(对话框2)
QT基础教程(对话框2)
32 0

热门文章

最新文章

推荐镜像

更多