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("达瓦里士,已成功终止发射")); } }