zoukankan      html  css  js  c++  java
  • 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("达瓦里士,已成功终止发射"));
        }
    }
  • 相关阅读:
    PHP开发者的MySQL错误
    shell编程技术和实例《linux0.01内核分析与操作系统设计》
    函数问题1 init_EMUX
    sizeof问题
    C语言读书心得
    《深入浅出MFC》读书感受
    计算机专业学习多年的苦恼
    一个完整的字符设备驱动程序导读
    学习书籍选择
    鼠标滑动、文本添加(倒计时)
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/12271780.html
Copyright © 2011-2022 走看看