Qt c++窗体类,微件类如何声明使用静态变量

Qt C++ 定义窗体类时,如果按照一般的c++类声明静态成员变量会提示undefined identifier,下面给出正确的方法

如果定义了一个QMainWindow类的子类MainWindow,添加静态变量,其头文件如下

  • mainwindow.h ----先声明

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "mybtn.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    static int timeelasped;//静态变量,在此只做声明
    static int timepassed;//静态变量,在此只做声明
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    int gettimepassed();
    void timerEvent(QTimerEvent *qt);
    void mousePressEvent(QMouseEvent *event);

private:
    Ui::MainWindow *ui;
    int timerid;
    int timerid1;
};
#endif // MAINWINDOW_H
  • mainwindow.cpp----再具体定义

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
int MainWindow::timeelasped=10;//具体定义声明的变量
int MainWindow::timepassed=0;//具体定义声明的变量

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    timerid = this->startTimer(1000);
    timerid1 = this->startTimer(1000);
    connect(ui->pushButton,&mybtn::clicked,[=](){
        qDebug()<<"第二套指挥方案启动成功!";
        if(MainWindow::timeelasped>0)
        {
            this->killTimer(timerid);
            this->ui->label_2->setText(QString("发射取消"));
        }
        else
        {
            this->ui->label_2->setText(QString("无法中止,导弹已经发射,正飞往目标,正尝试使用激光武器"));
        }
    });
}
  •  使用----类名::变量名
void MainWindow::mousePressEvent(QMouseEvent *qm)
{
    qDebug()<<"已交由全俄罗斯作战指挥中心";
    if(MainWindow::timeelasped==0)//使用时类名::变量名
    {
        this->ui->label_4->setText(QString("达瓦里士,已调用战术激光摧毁导弹"));
    }
    else
    {
        this->ui->label_4->setText(QString("达瓦里士,已成功终止发射"));
    }
}
原文地址:https://www.cnblogs.com/saintdingspage/p/12271780.html