当前位置: 首页 > news >正文

QT窗口(5)-对话框

QT窗口(5)-对话框

基本概念

用户与用户间实现短平快的操作

Qt中使用QDialog类表示对话框

和QWidget区别不大

实际开发中,更多在代码中创建额外的类,让额外的类继承来自QDialog

主窗口一般不会作为对话框,主窗口可以生成其他对话框

代码如下:

void Dialog::on_pushButton_clicked()
{QDialog*dialog=new QDialog(this);dialog->show();
}

运行结果:
在这里插入图片描述

可以在此基础上拓展功能

代码如下:

void Dialog::on_pushButton_clicked()
{QDialog*dialog=new QDialog(this);dialog->setWindowTitle("对话框的标题");dialog->resize(400,300);dialog->show();
}

运行结果:

在这里插入图片描述

QDialog类也是QWidget的子类

对话框内存释放问题

注意点:不同于界面上的其他控件,此处QDialog每次按下按钮,都会创建一个新的对象,并进行显示,这样会导致内存泄漏

如何解决这样的问题?

如果加上delte,对话框就会一闪而过

代码如下:

void Dialog::on_pushButton_clicked()
{QDialog*dialog=new QDialog(this);dialog->setWindowTitle("对话框的标题");dialog->resize(400,300);dialog->show();//正确做法是把delete和关闭按钮结合在一起,在用户点击关闭时候,触发delete//在Qt中为了方便,可以通过设置属性dialog->setAttribute(Qt::WA_DeleteOnClose);
}

自定义对话框

通过纯代码的方式

想要自定义对话框,需要继承来自QDialog的类

代码如下:

void MainWindow::on_pushButton_clicked()
{Dialog*dialog=new Dialog(this);dialog->resize(400,300);dialog->setAttribute(Qt::WA_DeleteOnClose);dialog->show();
}

运行结果如下:

在这里插入图片描述

可以添加控件

代码如下:

Dialog::Dialog(QWidget*parent):QDialog(parent)
{QVBoxLayout*layout=new QVBoxLayout();this->setLayout(layout);//可以添加一些控件QLabel*label=new QLabel("这是一个对话框",this);QPushButton*button=new QPushButton("关闭",this);layout->addWidget(label);layout->addWidget(button);connect(button,&QPushButton::clicked,this,&Dialog::handle);
}void Dialog::handle()
{this->close();
}

运行结果:

在这里插入图片描述

通过图形化界面自定义对话框

关键点在于:创建一个新的ui文件

代码如下:

void MainWindow::on_pushButton_clicked()
{QDialog*dialog=new QDialog(this);dialog->setAttribute(Qt::WA_DeleteOnClose);dialog->show();
}
http://www.dtcms.com/a/288193.html

相关文章:

  • 基于朴素贝叶斯的姓名性别预测系统
  • 如何构建未来的人-AI-环境智能教育生态系统
  • Java并发8--并发安全容器详解
  • 关于Vuex
  • uhd_find_devices有serial但是GNU Radio显示find no devices
  • Vue rem回顾
  • YOLOv8中添加SENet注意力机制
  • XSS-Labs 各关卡测试过程
  • 统计学习方法
  • 如何解决 ext4 文件系统的元数据损坏问题
  • 【深度强化学习】MIP-DQN 实现案例(完整Python代码)
  • [spring6: IntroductionAdvisor IntroductionInterceptor]-源码分析
  • C++编程学习(第11天)
  • Patch-wise Structural:一种引入局部统计特性的时序预测损失函数
  • eNSP综合实验(DNCP、NAT、TELET、HTTP、DNS)
  • 定时器中BDTR死区时间和刹车功能配置
  • debian的pulseaudio删掉也没事
  • Go语言pprof性能分析指南
  • SIMATIC WinCC Unified 使用 KPI 优化流程
  • 永磁同步电机无速度算法--脉振正弦注入法
  • Kakfa集群部署及主题创建
  • haproxy七层代理
  • day7--绑定媒资、课程发布
  • kafka--基础知识点--6--AR、ISR、OSR
  • Mysql系列--3、数据类型
  • RTDETR融合DECS-Net中的FFM模块
  • Verilog *2* SPI-立创逻辑派G1测试-1
  • 多表查询-8-练习总结
  • 【LeetCode 热题 100】437. 路径总和 III——(解法一)递归递归!
  • 【Linux】mmap的介绍和使用