我正在使用VisualStudio 2010使用Qt 4.8.3构建一个简单的程序,而我在使用简单的方法定义时遇到了麻烦:
这是我的代码:
GuiHelper.h
#ifndef GUIHELPER_H
#define GUIHELPER_H
#include "GuiHelper.cpp"
#include <QString>
#include <QWidget>
#include <QFile>
class GuiHelper
{
private:
static void useStyleSheet(QString, QWidget*);
};
#endif //GUIHELPER_H
和GuiHelper.cpp:
#include <QString>
#include <QWidget>
#include <QFile>
#include "GuiHelper.h"
void GuiHelper::useStyleSheet(QString filename, QWidget* widget)
{
// loads style file and apply style
QFile file(":/Resources/"+filename);
file.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(file.readAll());
widget->setStyleSheet(styleSheet);
}
我收到错误C2653:GuiHelper不是一个类或者一个namspace但是我真的没看到什么是错的......
在使用QT addin
创建项目时,我还检查了“没有预编译的头文件”谢谢!
答案 0 :(得分:4)
Quickfix - 删除
#include "GuiHelper.cpp"
来自标题。
问题的原因:编译器编译源 - 即.cpp
文件。它开始解析cpp文件并到达
#include "GuiHelper.h"
告诉它处理标题并粘贴其内容 - 标题的第二行
#define GUIHELPER_H
之后,你
#include "GuiHelper.cpp"
反过来尝试处理并粘贴cpp
文件,该文件再次尝试处理标头。由于已定义GUIHELPER_H
,因此不再处理标头,但请记住该类尚未定义。所以它到了行
void GuiHelper::useStyleSheet(QString filename, QWidget* widget)
但是您收到了错误,因为GuiHelper
尚未定义。