Qt - Qt SLOT的问题

问题描述 投票:0回答:1

我正在努力学习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");

}

为什么第二个插槽没有工作?抱歉这个新手问题,但我无法理解这个库的逻辑。 :-)

c++ qt slot
1个回答
0
投票

就像评论(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"); });
© www.soinside.com 2019 - 2024. All rights reserved.