在QT GUI中创建一个全局对象
Creating a global object in QT GUI
我正在尝试在QT GUI MainWindow文件中创建一个名为X的对象,我希望它是全局。我希望QT的按钮插槽功能能够在对象上执行操作。但是,编译器错误"错误:C4430:丢失类型指定词 - int假定"总是发生。这是标题文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_btOn_clicked();
void on_btOff_clicked();
private:
Ui::MainWindow *ui;
Fan x; // This doesn't work
Fan * x; // This doesn't either
int x; // This does work
};
#endif // MAINWINDOW_H
这是CPP文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "fan.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btOn_clicked()
{
ui->lblState->setText("Fan is on");
}
void MainWindow::on_btOff_clicked()
{
x.turnOff(); // This does not work of course
x->turnOff(); // Or this
ui->lblState->setText("Fan is off");
}
我已经告诉CPP文件,包括fan.h文件中的风扇类。如果我在窗口构造函数中创建对象,则可以罚款,但不是全局。另外,没有循环包含标头文件。粉丝类不包括MainWindow。
也许我不知道如何搜索它,但是我已经对它进行了一些研究,但无济于事。任何帮助都将不胜感激。
编辑:这是fan.cpp文件
#include "fan.h"
Fan::Fan(){
speed = 0;
isOn = false;
}
void Fan::setSpeed(int s){
speed = s;
}
int Fan::getSpeed(){
return speed;
}
void Fan::turnOn(){
isOn = true;
speed = 1;
}
void Fan::turnOff(){
isOn = false;
speed = 0;
}
bool Fan::getState(){
return isOn;
}
和fan.h文件:
#ifndef FAN_H
#define FAN_H
class Fan
{
private:
int speed;
bool isOn;
public:
Fan();
void setSpeed(int);
void turnOn();
void turnOff();
int getSpeed();
bool getState();
};
#endif // FAN_H
您忘记在Header File
中包括或声明类风扇。如果您使用
Fan * x;
您可以使用
class Fan;
作为Header File
开头的正向声明。编译器只需要知道有一个名为Fan
的类,但是在Header
内,您只使用指针。屁股别忘了 #include
cpp文件中的真实文件。
如果您使用
Fan x;
您必须在 Header-File
#include
Fan.h
相关文章:
- C++:实现一个全局常量,其值由用户给出
- 我真的可以使用 Type 的每个声明创建一个全局变量吗?
- 在QT GUI中创建一个全局对象
- 为什么 std::get<T> for 'variant' 是一个全局函数?
- 通过其他文件中的另一个全局变量使用类的全局实例
- 定义一个全局变量并在那里初始化它本身可以吗?
- C++ pthread,两个线程读取一个全局变量
- 我应该为永远不变的值做一个全局常量变量吗,比如足球运动员的计数
- 如何打印地图?让它成为一个全局变量?C++
- 我如何定义一个全局函数来检查边界
- 如何定义一个全局可见操作符
- 将声明一个全局变量时,做递归内存效率和速度更快
- 创建一个全局ofstream变量
- 如何在c++中定义一个全局函数
- 如何为flashwindowwex创建一个全局32/64位钩子
- 我可以用函数调用的结果初始化一个全局变量吗
- 在 c++ 中声明一个全局范围变量 const
- 你能在.hpp文件中重载一个全局操作符吗?
- 在Python中公开一个C++全局变量
- 向静态库中添加一个全局变量以进行版本控制