【发布时间】:2011-09-06 04:19:54
【问题描述】:
我正在使用带有 QT 4.7.1 和插件的 VS2008。我是这个环境的新手。
我设法进行必要的设置并运行简单的“hello world”。但是当我尝试使用简单的
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 文件。
感谢任何帮助。
【问题讨论】:
-
我在你的代码中没有看到你的 void Notepad::quit(){} 方法在任何地方都是正常的。
-
我希望如此,因为这不会导致任何错误。删除它也不会影响代码!!
-
@KaZ 这就是问题所在。退出没有定义。这不是导致直接错误,而是定义 Q_OBJECT 宏是因为它找不到 quit() 槽的定义。
标签: visual-studio-2008 qt signals-slots qobject