【发布时间】:2013-05-24 12:05:10
【问题描述】:
我知道要在类中使用 Qt 的信号和槽机制,该类必须包含 Q_OBJECT 宏,但我试图在 main() 中使用信号和槽,而不使用任何类。
到目前为止,这是我的代码:
#include <QApplication>
#include <QWidget>
#include <QTextEdit>
#include <QtGui>
void saveText();
int main(int argv, char **args)
{
QApplication app(argv, args);
QTextEdit textEdit;
QPushButton saveButton("Save!");
QPushButton exitButton("Exit!");
QObject::connect(&exitButton,SIGNAL(clicked()),qApp,SLOT(quit()));
QObject::connect(&saveButton,SIGNAL(clicked()),qApp,SLOT(saveText()));
QVBoxLayout vlyt;
vlyt.addWidget(&textEdit);
vlyt.addWidget(&exitButton);
vlyt.addWidget(&saveButton);
QWidget mainWindow;
mainWindow.setLayout(&vlyt);
mainWindow.show();
return app.exec();
}
void saveText()
{
exit(0);
}
这是生成的 GUI 窗口:
从上面的代码中,退出按钮连接到quit(),这是一个Qt函数,点击它就可以工作。分配给函数saveText() 的保存按钮配置为退出,但不退出。
请告诉我我在理解 Qt 中的信号和槽方面哪里出了问题。
【问题讨论】:
-
connect(&saveButton, &QPushButton::clicked, [](){saveText();}); // qt5.9.6
标签: c++ qt user-interface qt4