我正在使用VS2008和QT 4.7.1以及加载项。我是这个环境的新手
我设法做了必要的设置,并运行简单的“你好世界”。但是当我尝试使用简单的时候
点击按钮quit()
插槽,我失败了。在尝试使用Q_OBJECT
时,它也会导致构建失败
评论Q_OBJECT
之后构建并调试代码。现在显示
QObject :: connect:找不到。\ main.cpp中的插槽QWidget :: quit()。
下面是我的代码
#include <QtGui>
#include "QtGui\QApplication"
#include "QObject"
class Notepad : public QWidget
{
//Q_OBJECT
public:
Notepad();
private slots:
void quit();
private:
QTextEdit *textEdit;
QPushButton *quitButton;
};
Notepad::Notepad()
{
textEdit = new QTextEdit;
quitButton = new QPushButton(tr("Quit"));
connect(quitButton, SIGNAL(clicked()), this, SLOT(quit() ));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(textEdit);
layout->addWidget(quitButton);
setLayout(layout);
setWindowTitle(tr("Notepad"));
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Notepad nt;// = new Notepad();
nt.show();
return a.exec();
}
我已经通过网络搜索但未能得到合理的解决方案。大多数解决方案都是在命令行上使用qmake。 我也能找到该项目的.pro文件。
感谢任何帮助。
答案 0 :(得分:1)
Nitesh:您需要Q_OBJECT宏才能使插槽正常工作,MOC会将包含Q_OBJECT的每个标头编译为moc_ * .cpp文件。将moc * .cpp添加到您的项目中,一切都应该正常。未解决的外部意味着您缺少函数的定义,您是否在任何地方定义它?
答案 1 :(得分:0)
将记事本的声明移动到标题(例如,notepad.h),重新启用Q_OBJECT,然后添加到.pro文件中:
HEADERS += notepad.h
重新运行qmake,然后就可以了。