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

Qt自定义对话框

介绍

自定义框主要通过对现有对话框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.lryc.cn/news/124071.html

相关文章:

  • Python 程序设计入门(018)—— format() 函数的用法详解
  • 演进式架构
  • OCP China Day 2023:五大社区齐聚,加速开源开放创新与落地
  • 【Linux】进程间通信之管道
  • 记录一个正则表达式
  • 用于全局复根和极点查找算法的自适应网格生成器(Matlab代码实现)
  • 修改Linux中SSH的端口
  • Ansible从入门到精通【六】
  • 国企的大数据岗位方向的分析
  • 【MySQL--->数据类型】
  • Ceph部署
  • 打工日记-Vue3+Ts二次封装el-table
  • funbox3靶场渗透笔记
  • springcloud3 hystrix实现服务降级,熔断,限流以及案例配置
  • ComponentOne Studio ASP.NET MVC Crack
  • OPENCV C++(十一)
  • ES使用心得
  • Stable Diffusion - 幻想 (Fantasy) 风格与糖果世界 (Candy Land) 人物提示词配置
  • 部署K8S集群
  • 在时间和频率域中准确地测量太阳黑子活动及使用信号处理工具箱(TM)生成广泛的波形,如正弦波、方波等研究(Matlab代码实现)
  • 一百五十四、Kettle——Linux上安装Kettle9.3(踩坑,亲测有效,附截图)
  • PackageNotFoundError: No package metadata was found for bitsandbytes解决方案
  • uni-app和springboot完成前端后端对称加密解密流程
  • 【Unity造轮子】制作一个简单的2d抓勾效果(类似蜘蛛侠的技能)
  • Unity 人物连招(三段连击)
  • 关于WSL以及docker连接adb的坑
  • python安装第三方包时报错:...\lib\site-packages\pip\_vendor\urllib3\response.py...
  • 腾讯云从业者认证考试考点——云存储产品
  • 猿辅导Motiff与IXDC达成战略合作,将在UI设计领域推动AI革新更多可能性
  • 条件操作符(三目操作符)