编译期间未找到文件
代码波纹管有什么问题?当我编译它时,我得到一个警告,找不到文件。有些东西是无效的。我可能在这里犯了一些错误。我认为问题可能是我从QWidget继承的方式。编译期间未找到文件
#include <QtGui/QApplication>
#include "filedialogs.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
FileDialogs w;
w.openFile();
return 0;
}
#ifndef FILEDIALOGS_H
#define FILEDIALOGS_H
#include <QWidget>
class QFileDialog;
class FileDialogs : public QWidget
{
public:
FileDialogs(QWidget *parent = 0);
~FileDialogs();
void openFile();
};
#endif // FILEDIALOGS_H
#include <QFileDialog>
#include "filedialogs.h"
FileDialogs::FileDialogs(QWidget *parent)
: QWidget(parent)
{
}
FileDialogs::~FileDialogs()
{
}
void FileDialogs::openFile()
{
QString filename = QFileDialog::getOpenFileName(
this,
tr("Open Document"),
QDir::currentPath(),
tr("Document files (*.doc *.rtf);;All files (*.*)"));
if(!filename.isNull())
{
qDebug(filename.toAscii());
}
}
#-------------------------------------------------
#
# Project created by QtCreator 2011-07-29T19:06:33
#
#-------------------------------------------------
QT += core gui
TARGET = exX
TEMPLATE = app
SOURCES += main.cpp\
filedialogs.cpp
HEADERS += filedialogs.h
此错误消息是由所述编译器MOC发射。您错过了Q_OBJECT宏。把它放在你的类声明中,像这样:
class FileDialogs : public QWidget
{
Q_OBJECT
public:
....
嗯,这摆脱了警告。谢谢。我现在有些困惑,为什么我不需要声明任何信号或插槽时需要Q_OBJECT宏? – user440297
除了那些Qt文档没有详细介绍的细节之外,还有很多原因,他们通常最终只会说,无论如何。为了8个字符,我把它写在我编写的每个Qt子类中,因为我几乎总是最终做最终需要它的东西。这是我决定不把精力投入到计算中的一件事,直到我决定开始修改Qt库为止:)如果我猜测,我会怀疑tr()宏。 –
公平,够了。再次感谢。你会说我的代码不是缺少的Q_OBJECT宏吗?没有明显的荒谬吗?我还是Qt和C++的新手。 – user440297
什么文件没有找到,什么是无效的? –
QtCreator对此没有具体说明。我的猜测是它不喜欢FILEDIALOGS_H中的某些内容。另一个奇怪的是,尽管有警告,它仍然可以编译,并且似乎工作。然后,如果我再次编译,它不会抱怨,直到我改变了src代码中的东西。奇怪。在我看不到的代码中一定是错的。 – user440297
确切的消息是:“找不到相关的类,没有生成输出。” (filedialogs.h) – user440297