3

我正在使用 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 is not a class or a namspace 但我真的看不出有什么问题...

在使用 QT 插件创建项目时,我还检查了“无预编译头文件”

谢谢!

4

1 回答 1

4

快速修复- 删除

#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尚未定义。

于 2012-11-28T18:46:39.780 回答