【发布时间】:2023-03-25 18:40:01
【问题描述】:
我刚刚开始使用 QtGUI 进行开发,并且查看了一些教程和文档,根据我所阅读的内容,这应该可以工作。
#define CONNECT QObject::connect
void test();
QPushButton *lpTestBtn;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtProject w;
w.show();
lpTestBtn = w.window()->findChild<QPushButton*>("TestBtn");
CONNECT(lpTestBtn, SIGNAL(clicked()),qApp,SLOT(test()));
return a.exec();
}
void test()
{
lpTestBtn->setText("Hi");
}
但是 test() 永远不会被调用。另外,lpTestBtn 不为空,并且被正确找到。
我尝试了以下更改
CONNECT(lpTestBtn, SIGNAL(clicked()),qApp->activeWindow(),SLOT(test()));
CONNECT(lpTestBtn, SIGNAL(clicked()),w.window(),SLOT(test()));
我知道我可以做 QtProject::on_TestBtn_clicked();但我想使用 CONNECT、SIGNAL 和 SLOT 让它工作。
【问题讨论】:
-
运行程序时是否收到连接警告或类似情况?它看起来不像“void test()”被声明为 w.window() 中的一个插槽 - 它只是一个本地函数......
标签: c++ qt qtgui qtcore qt-signals