【Qt】加载.h文件显示窗体并添加交互逻辑

【Qt】加载.h文件显示窗体并添加交互逻辑

1、背景

加载.ui转化的.h头文件显示窗体,
以及Test.pro、ui_widget.h、main.cpp请参考如下博客:
【Qt】通过继承ui界面类的方式加载.ui转化的.h头文件显示窗体

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

以上博客仅是显示窗体,并没有交互逻辑。
本博客示例,在显示的窗体上增加人机交互逻辑。

2、实例

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

//jnWidget.h
#ifndef JNWIDGET_H
#define JNWIDGET_H
#include <QWidget>
#include <QTimer> //QTimer提供了定时器信号 和 单触发定时器。
#include "ui_widget.h" //导入ui界面头文件

// 采用继承的方式
// 继承父控件类.
// 必须先继承父窗口类QWidget,再继承ui界面类;
class jnWidget :
        public QWidget,
        public Ui::Widget //请仔细查看界面文件ui_widget.h
{
    
    
    Q_OBJECT
public: // 共有继承
    jnWidget(void);

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_widget.h界面类中的setupUi函数;
    // 其中参数this是父窗口的指针;
    // ui_widget.h文件产生子控件,需要给子控件指定父控件。
    ui->setupUi(this);

    myTimer=new QTimer(this);    //QTimer对象指针
    // 连接函数,将信号槽连接,即将信号timeout()与相应的槽函数相连
    connect(myTimer,SIGNAL(timeout()), this, SLOT(onTimeOut()));
}

// "开始"按钮,启动定时器
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则归零暂停。
运行示例如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jn10010537/article/details/128597580