我正在努力学习Qt,我有SLOT的问题
#include "MainWindow.h"
MainWindow::MainWindow(QWidget *parent) : QWidget(parent)
{
ui.setupUi(this);
QObject::connect(ui.Button_Quit, SIGNAL(clicked()), qApp, SLOT(quit())); // WORK
QObject::connect(ui.AddEmployee, SIGNAL(clicked()), this, SLOT(changeText())); // DOESN'T WORK
}
void MainWindow::changeText()
{
ui.Button_Quit->setText("TEST");
}
为什么第二个插槽没有工作?抱歉这个新手问题,但我无法理解这个库的逻辑。 :-)
就像评论(Jesper Juhl)一样,宏在运行时通过解析为字符串来工作。
您可以使用以下任何一种方式(传递函数的地址)
//THIS WAY, YOU NEED AN ADDITIONAL FUNCTION buttonClicked
connect(ui->pushButton, &QPushButton::clicked,this,&MainWindow::buttonClicked);
使用Lambdas:
//THIS WAY, YOU DO NOT REQUIRE AN ADDITIONAL FUNCTION.
connect(ui->pushButton, &QPushButton::clicked,[=]() { ui->pushButton->setText("TEST"); });