在将窗口小部件提升到该类后,Qtcreator无法找到类头文件?

the*_*ive 4 c++ qt qt-creator

我是Qt的新手,在C++方面也没有那么多经验.

我创建了简单的Qt GUI应用程序,但后来我不得不mousepresseventQLabel类型对象上添加该函数,所以我创建了具有头文件的类,其中包含以下代码:

#ifndef IMAGEACTION_H
#define IMAGEACTION_H

#include <QLabel>
#include <QMouseEvent>
#include <QDebug>
#include <QEvent>

class imageaction : public QLabel
{
    Q_OBJECT
public:
    explicit imageaction(QWidget *parent = 0);
    void mousePressEvent(QMouseEvent *ev);
signals:
    void Mouse_Pressed();
public slots:

};

#endif // IMAGEACTION_H
Run Code Online (Sandbox Code Playgroud)

.cpp文件包含以下代码:

#include "imageaction.h"

imageaction::imageaction(QWidget *parent) :
    QLabel(parent)
{
}

void imageaction::mousePressEvent(QMouseEvent *ev)
{
    emit Mouse_Pressed();
}
Run Code Online (Sandbox Code Playgroud)

mainwindow.cpp文件中添加了#include "imageaction.h"包含头文件的行,在.pro文件中还添加了以下行:

SOURCES += main.cpp\
        mainwindow.cpp \
    imageaction.cpp


HEADERS  += mainwindow.h \
    imageaction.h
Run Code Online (Sandbox Code Playgroud)

但程序总是会出现以下错误:

C1083: Cannot open include file:'imageaction.h': No such file or directory.

你能说出我犯错误的地方吗?为了上课,我按照这个视频

Ash*_*hif 6

我想,"C1083:无法打开包含文件:'imageaction.h':没有这样的文件或目录"来自你的ui _*.h文件的错误.如果是这种情况,您的问题是重新启动imageaction小部件.

This may work
1. while promoting imageaction widget, uncheck "globalinclude".
     or
2. Update pro file with "INCLUDEPATH += path where mywidget.h"
Run Code Online (Sandbox Code Playgroud)

请检查更多信息促销小工具

  • 对于可能会遇到这个答案的其他人来说,链接中的这一行解决了我的问题:"当你在设计师中定义一个推广的小部件时,就有一个放置"头文件"的地方.放置正确的包含路径,而不仅仅是"mywidget.h"." (2认同)

小智 6

对于 CMake,它需要包含要使用的目录路径。在 CMakeLists 中,这可以通过包含目录指令来完成。例如:

include_directories(${CMAKE_CURRENT_SOURCE_DIR})
Run Code Online (Sandbox Code Playgroud)

如果头文件位于单独的包含文件夹中,则应将其写入 CMakeLists 中:

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
Run Code Online (Sandbox Code Playgroud)