当前位置: 首页 > 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.lryc.cn/news/593507.html

相关文章:

  • MySQL基础教程
  • 变频器实习Day10
  • 06-人机共生:Prompt之外的思考
  • VRRP-虚拟路由冗余协议
  • Spring AI 项目实战(十九):Spring Boot + AI + Vue3 + OSS + DashScope 构建多模态视觉理解平台(附完整源码)
  • 【HarmonyOS】Ability Kit - Stage模型
  • java: DDD using sql server 2019 or Oracle21c
  • 【嵌入式电机控制#16】电流环(三):过采样提高采集精度看门狗监测总线电压
  • C++类和对象(一)基础内容讲解
  • 【项目分享】动手做一个TypeC转TTL模块(附带原理图)
  • Spring MVC @RequestParam注解全解析
  • 数据库第四次作业
  • 【C++】初识C++(2)
  • 完美解决 Ubuntu 中自定义启动器图标重复的问题(以 MATLAB 为例)
  • nginx.conf模版
  • 基于GEE与哨兵2号的土地覆盖分类方法及实现
  • python网络爬虫之selenium库(二)
  • uview-ui使用u-row+u-avatar居中布局
  • uview-ui使用u-icon文字图标展示
  • react+antd 可拖拽模态框组件
  • Python之--元组
  • RabbitMQ01——基础概念、docker配置rabbitmq、内部执行流程、五种消息类型、测试第一种消息类型
  • Java学习--------消息队列的重复消费、消失与顺序性的深度解析​
  • I/O 多路复用select,poll
  • Java 中的继承与多态
  • 5.组合模式
  • 3.5软件开发活动[2-系统设计]面向对象设计-UML统一开发过程
  • [故障诊断方向]SNNs:针对小样本轴承故障诊断的孪生神经网络模型
  • 在Vscode中使用Kimi K2模型:实践指南,三分钟生成个小游戏
  • 练习三:熟知前端知识