【Qt】通过创建ui界面类成员变量的方式显示窗体
创始人
2024-05-08 20:32:55

【Qt】通过创建ui界面类成员变量的方式显示窗体

  • 1、背景
  • 2、实例
  • 3、验证

1、背景

将.ui 文件转化为.h 头文件参考:
【Qt】将QtDesigner生成的.ui文件转化为.h头文件

https://jn10010537.blog.csdn.net/article/details/128589666

其生成的.h头文件的显示,如果通过自定义class继承ui界面类的方式加载,
参考如下博客:
【Qt】通过继承ui界面类的方式加载.ui转化的.h头文件显示窗体

https://jn10010537.blog.csdn.net/article/details/128597580

本博客介绍第二种方式加载界面的.h头文件显示。
即在创建的class种创建ui界面类成员变量的方式。

本博客可以与以下博客进行对比,仅有jnWidget.h、jnWidget.cpp文件上的区别:
【Qt】加载.h文件显示窗体并添加交互逻辑

https://jn10010537.blog.csdn.net/article/details/128597580

2、实例

本博客涉及的Test.pro、ui_widget.h、main.cpp 请参考如下博客:
【Qt】通过继承ui界面类的方式加载.ui转化的.h头文件显示窗体
https://jn10010537.blog.csdn.net/article/details/128590376

修改后的jnWidget.h头文件内容如下:

//jnWidget.h
#ifndef JNWIDGET_H
#define JNWIDGET_H
#include 
#include       //QTimer提供了定时器信号 和 单触发定时器。
#include "ui_widget.h" //导入ui界面头文件// 采用创建ui界面类成员变量
class jnWidget :public QWidget
{Q_OBJECT
public: // 共有继承jnWidget(void);  // 构造函数~jnWidget(void); // 析构函数,用于释放ui指针;private slots:                      //槽函数void on_buttonStart_clicked();  // 开始按钮点击事件void on_buttonStop_clicked();   // 暂停按钮点击事件void onTimeOut();               // 定时器超时触发的槽函数private: // 私有继承Ui::Widget *ui;  // 申明一个对象指针QTimer *myTimer ;//申明一个定时器对象指针
};
#endif // JNWIDGET_H

修改后的jnWidget.cpp源文件内容如下:

//jnWidget.cpp
#include "jnWidget.h"// 构造函数
jnWidget::jnWidget(void)
{// 创建界面类的成员变量ui=new Ui::Widget();// 调用ui_widget.h界面类中的setupUi函数;// 其中参数this是父窗口的指针;// ui_widget.h文件产生子控件,需要给子控件指定父控件。ui->setupUi(this);myTimer=new QTimer(this);    //QTimer对象指针// 连接函数,将信号槽连接,即将信号timeout()与相应的槽函数相连connect(myTimer,SIGNAL(timeout()), this, SLOT(onTimeOut()));
}jnWidget::~jnWidget(void)
{delete ui;
}// "开始"按钮,启动定时器
void jnWidget::on_buttonStart_clicked()
{// 如果定时器未激活,则启动定时器,时间间隔是1000毫秒,// 即每隔1000毫秒,定时器myTimer自动触发timeout()if(false==myTimer->isActive()){myTimer->start(1000);}
}// "暂停"按钮,停止定时器
void jnWidget::on_buttonStop_clicked()
{if(true==myTimer->isActive()){myTimer->stop();}
}// 定时器触发的槽函数
void jnWidget::onTimeOut()
{static int i=0;i++;if (6<=i){myTimer->stop();i=0;}ui->lcdNumber->display(i);
}

3、验证

编译运行,点击"开始"按钮 开始间隔1秒计数,当计数到6则归零暂停。
运行示例如下:
在这里插入图片描述

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...