Qt 5.0包括个人标题问题

时间:2013-03-08 23:47:07

标签: c++ qt include

看起来我对使用Qt的c ++编程有点新意,所以我在win 7 64位上下载了5.0版本。我已经创建了一个名为Mafenetre的类,我实现了它的代码,它看起来很完美但是当我尝试运行主程序时它说 C:\ Users \ Zbart3i \ Downloads \ Programs \ test \ main.cpp:3:错误:C1083:无法打开包含文件:'Mafenetre.h':没有这样的文件或目录

这是我的专业代码:

SOURCES += \
    main.cpp \
    mafenetre.cpp

QT+=widgets

HEADERS += \
    mafenetre.h

这是Mafenetre.h的代码:

#ifndef MAFENETRE_H
#define MAFENETRE_H


include <   QtWidgets>

class Mafenetre:public QWidget
{
public:
    Mafenetre();
private:
    QPushButton *m_bouton;

};

#endif // MAFENETRE_H

这是Mafenetre's.cpp:

#include      "mafenetre.h"

Mafenetre::Mafenetre():QWidget()
{
    setFixedSize(300,150);

    m_bouton=new QPushButton("pimp mon bouton",this);

    m_bouton->setFont(QFont("monotype corsiva",15));
    m_bouton->setCursor(Qt::PointingHandCursor);

}

和main.cpp

#include<    QtWidgets/QApplication>
#include<    QtWidgets>
#include<    Mafenetre.h>


void main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Mafenetre fenetre;


    fenetre.show();
    app.exec();

}

2 个答案:

答案 0 :(得分:0)

在C ++中,你应该使用 #include“name”,而不是 #include (引用标记而不是三角括号),因为它们有不同的含义。

#include 查找安装了库(包括标准库)的某些目录。 #include“name”首先在项目的文件夹中查找,然后检查其他目录。

嗯,为了在技术上准确,它们在一个顺序中查找的文件夹是特定于编译器的。

此:

#include <Mafenetre.h>

应该是这样的:

#include "Mafenetre.h"

阅读本文:

  

MinGW #include search directories

     

默认搜索的其他目录

     

目录的最小列表,如上所述   上面,指定默认搜索的唯一位置,   用于系统头文件或与用户安装相关联的标头   库;但是,有一个例外。精明的读者可能会有   注意到包含文件搜索路径是逐项列出的   顺序列表,第二个连接到第一个;   然而,第一个,被确定为#include“...”搜索列表   似乎是空的。实际上,这种明显的空虚可能就是这样   误导;除非用户在调用时指定“-I-”选项   GCC,这个列表只包含一个目录:其中的目录   包含#include“file”指令的源文件驻留。

     

请注意,不会在#include指令的#include <file>形式指定的头中搜索这一个附加目录;它仅适用于使用指令的#include "file"形式指定的标头。

确保您的“Mafenetre.h”文件与main.cpp文件位于同一文件夹中。否则,您需要执行#include“folderPath / fileName.h”,并在.pro文件中添加 SOURCES HEADERS 变量的路径。

同时确保拼写相同,并使用正确的案例 - 有时它很重要,有时则不然。

如果您仍然遇到问题,请尝试编译一个只包含一个main.cpp的简单项目,以确保所有内容都安装正确。

答案 1 :(得分:0)

您确定已包含正确的标题。此外,我没有看到您在头文件中使用QObject宏。它应该是这样的:

Mafenetre.h:

#ifndef MAFENETRE_H
#define MAFENETRE_H

#include <QWidget>

    class Mafenetre : public QWidget
    {
        Q_OBJECT
    public:
        explicit Mafenetre(QWidget *parent = 0);

    signals:

    public slots:

    };

    #endif // MAFENETRE_H

Mafenetre.cpp:

#include "mafenetre.h"

Mafenetre::Mafenetre(QWidget *parent) :
    QWidget(parent)
{
}

最后你的main.cpp应该是这样的,检查标题:

......
#include "mafenetre.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Mafenetre m;
    m.show();

    return a.exec();
}