Qt - проблемы со слотами Qt - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь выучить Qt, и у меня проблема со слотом

#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");

}

Почему не работает 2-й слот?Извините за этот вопрос новичка, но у меня проблемы с пониманием логики этой библиотеки.: -)

1 Ответ

0 голосов
/ 25 февраля 2019

Как и в комментарии (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"); });
...