Qt自定义对话框

news2024/11/27 12:48:08

介绍

自定义框主要通过对现有对话框QDialog类的派生,根据需求编写成员函数、重载信号函数、槽函数,进而实现在主QWidget中点击某个按钮后,一个对话框的弹出

流程

简化创建派生类

最后点击完成即可。

自定义ui界面,编写成员函数等

class TMyDialog;
}
​
class TMyDialog : public QDialog
{
    Q_OBJECT
​
public:
    explicit TMyDialog(QWidget *parent = nullptr);
    ~TMyDialog();
​
    void setRowCol(int row, int col);
​
    int rowCount();
    int colCount();
​
private slots:
    void on_btnEnsure_clicked();
​
    void on_btnCancel_clicked();
​
private:
    Ui::TMyDialog *ui;
};
#include "tmydialog.h"
#include "ui_tmydialog.h"
​
TMyDialog::TMyDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::TMyDialog)
{
    ui->setupUi(this);
}
​
TMyDialog::~TMyDialog()
{
    delete ui;
}
​
void TMyDialog::setRowCol(int row, int col)
{
    ui->spinBoxRow->setValue(row);
    ui->spinBoxCol->setValue(col);
}
​
int TMyDialog::rowCount()
{
    return ui->spinBoxRow->value();
}
​
int TMyDialog::colCount()
{
    return ui->spinBoxCol->value();
}
​
void TMyDialog::on_btnEnsure_clicked()
{
    this->accept();
}
​
​
void TMyDialog::on_btnCancel_clicked()
{
    this->reject();
}

主窗口触发槽函数编写

这里常有一个固定的格式

  1. new一个自定义对话框类对象(根据需求确定是在槽函数内new还是在外面new)

  2. 根据需求编写功能(组件显示数值初始化等)

  3. 获取对话框执行结果(int ret = dialog->exec()),根据执行结果编写后续功能

void MainWindow::on_actSetRowCol_triggered()
{
    TMyDialog *m_dialog = new TMyDialog();
​
    m_dialog->setWindowFlag(Qt::MSWindowsFixedSizeDialogHint);
    m_dialog->setRowCol(m_model->rowCount(), m_model->columnCount());       //这里只是初始化对话框中的spinbox的值
​
    int ret = m_dialog->exec();     //循环执行获取结果
    if(ret == QDialog::Accepted)
    {
        m_model->setColumnCount(m_dialog->colCount());
        m_model->setRowCount(m_dialog->rowCount());
    }
    delete m_dialog;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/858589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytest fixture 常用参数

fixture 常用的参数 参数一:autouse,作用:自动运行,无需调用 举例一:我们在类中定义一个function 范围的fixture; 设置它自动执行autouseTrue,那么我们看下它执行结果 输出: 说明:…

前端项目环境变量如何配置?

我们在项目开发过程中,至少会经历开发环境、测试环境和生产环境三个阶段。不同阶段请求的状态(如接口地址等)不尽相同,若手动切换接口地址是相当繁琐切容易出错的。于是环境变量配置的需求就应运而生,我们只需做简单的…

【论文简介】PP-OCR中文字符识别论文概述

相关论文 2009.PP-OCR: A Practical Ultra Lightweight OCR System 2109.PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System 2206.PP-OCRv3: More Attempts for the Improvement of Ultra Lightweight OCR System 工程代码: github_PaddleOCR | 国内gitee_…

FlexRay汽车总线静电防护,如何设计保护方案图?

FlexRay是一种高速、实时、可靠、具备故障容错能力的总线技术,是继CAN和LIN总线之后的最新研发成果。FlexRay为线控应用(即线控驱动、线控转向、线控制动等)提供了容错和时间确定性性能要求。虽然FlexRay将解决当前高端和未来主流车载网络的挑…

HCIP-OpenStack

1、linux模板制作 使用minimal最小化安装Stream-8 制作Linux 虚拟机模板,后面克隆(完整克隆)出计算节点compute和控制节点controller,https://blog.51cto.com/cloudcs/5258769 1、修改网卡信息# cat ifcfg-ens160 TYPE…

yolov5代码解读之train.py【训练模型】

哇咔咔,登场 代码开头都是一些导包到模块的: 接下来来到入口函数: 我们直接来到main函数的内容:(分四个部分) 前两部分: 关于main函数的第二部分中的resume参数(496行)&…

进程间通信的编程方式(IPC)及实验

进程间通信(IPC)方式 目录 Socket 管道 匿名管道 消息队列 共享内存 信号 远程过程调用 Socket Socket编程是一种在计算机网络中进程间通信的编程方法。Socket提供了一种在不同主机上运行的进程之间传输数据的机制。通过使用Socket API&#xff…

ABC300

ABC300E 题面 思路 对于投骰子,最后一步可能得到1、2、3、4、5、6,那么对应的最后一步之前的数是n/1、n/2、n/3、n/4、n/5,n/6。并且每个数字(1、2、3、4、5、6)得到的概率是一样的,即为1/6。 也就是F(n…

Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)

1.简介 在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,上一篇文章主要介绍了jmeter连接和创建数据库测试计划的过程,在文中通过示例和代码非常详细地介绍给大家,希望对各位小伙伴…

cpolar的基础使用方法

如何使用cpolar内网穿透? 文章目录 如何使用cpolar内网穿透?前言1. 在群辉NAS系统下安装cpolar套件2. 管理隧道列表3. 创建固定数据隧道 前言 群晖作为大容量存储系统,既可以作为个人的私有存储设备,也可以放在小型企业中作为数据…

别再用人工巡检了,教你一个简单好用的新技巧

当今社会中,计算机设备扮演着不可或缺的角色,它们在个人生活、商业活动和科技创新中都具有重要地位。 无论是个人用户还是企业,UPS监控都是确保计算机设备稳定运行的关键环节。通过有效的UPS监控,我们能够在电力波动或中断时保护硬…

python中的迭代器和生成器

一、迭代器 支持迭代的容器,如列表(list)、元组(tuple)、字典(dict)、集合(set)这些序列式容器。 自定义迭代器的类中必须实现以下2个方法: __next__(self)…

Netty:用forEachByte遍历处理ByteBuf中的可读字节

说明 io.netty.buffer.ByteBuf的forEachByte(ByteProcessor processor)用指明的ByteProcessor 遍历ByteBuf中的可读字节。遍历的时候用升序遍历。 -这个函数可以在ByteBuf中寻找某个字节首次出现的位置,或者首次不是某个字节的位置。 如果已经遍历完了可读字节但还…

简单的基于SpringBoot的学生成绩管理系统java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 简单的基于SpringBoot的学生成绩管理系统 系统有2权限…

LeetCode面向运气之Javascript—第26题-删除有序数组中的重复项-99.18%

LeetCode第26题-删除有序数组中的重复项 题目要求 一个升序排列的数组nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。元素的相对顺序应该保持 一致 。然后返回 nums 中唯一元素的个数。 原地 说是一个…

领航优配:股市看盘的几个小技巧?

股市看盘是每个股民不可或缺的一项技能,它能够帮助股民更好地剖析股票的走势,从而做出更明智的出资决策。可是,股市行情千变万化,要想达到精准的猜测与判断,需求把握一些小技巧。本文将分享几个股市看盘的小技巧&#…

使用CANape查看blf数据

blf数据不像mf4那样自带信号数据库,因为它是记日志用的,一般情况下要尽可能的小,所以,解析blf数据要单独有个数据库文件,一般是dbc或者arxml,我这里用dbc做示范,解析之前要先加载dbc&#xff0c…

微服务Ribbon-负载均衡策略和饥饿加载

目录 一、负载均衡策略 1.1 负载均衡策略介绍 1.2 自定义负载均衡策略 二、饥饿加载 (笔记整理自bilibili黑马程序员课程) 一、负载均衡策略 1.1 负载均衡策略介绍 负载均衡的规则都定义在IRule接口中,而IRule有很多不同的实现类&…

HCIP-linux和kvm(ks配置文件自动化安装及console连虚拟机有问题)

1、linux linux安装教程参考,https://blog.51cto.com/cloudcs/5245337 yum源配置 本地yum源配置: 8版本配置:将光盘iso挂载到某个目录,/dev/cdrom是/dev/sr0软链接,# mount /dev/cdrom /mnt,# ls /mnt Ap…

siMLPe:Human Motion Prediction

Back to MLP: A Simple Baseline for Human Motion Prediction解析 摘要1. 简介2. Related Work2.1 基于RNN的人体运动预测2.2 基于GCN的人体运动预测2.3 基于 Attention 的人类运动预测2.4 总结 3. siMLPe3.1 离散余弦变换(Discrete Cosine Transform (DCT)&#x…