Почему Qt SIGNAL (clicked (bool) не совпадает с поведением, по-настоящему нажатым мышью)? - PullRequest
0 голосов
/ 17 апреля 2019

Я добавляю QPushButton в свой виджет и устанавливаю его для проверки. и добавьте несколько кодов в функцию слота, как показано ниже. если я нажимаю эту кнопку 1 мышью, все работает нормально. Но если я подключу его с помощью сигнала:

connect(ui->button2,SIGNAL(clicked(bool)),this,SLOT(on_button1_clicked(bool)));

и нажмите кнопку 2 мышью, выполнено on_button1_clicked (проверено bool), но цвет фона button1 не изменяется.

Кто-нибудь давал какие-то предложения?

void MainWindow::on_button1_clicked(bool checked)
{
    if(checked)
    {       
       //some work here.....
        ui->button1->setText(tr("on "));
       //.......
    }
    else
    {
       //some work here.......
        ui->button1->setText(tr("off "));
       //......
    }
}

1 Ответ

0 голосов
/ 17 апреля 2019

Вместо этого вы должны подключить button2 к button1 слоту setChecked(bool).

Я только что посмотрел на источник QAbstractButton::setChecked(bool), и он излучает сигналхотя и не clicked(bool), но toggled(bool).

Так что переименуйте ваш on_button1_clicked(bool) в on_button1_toggled и измените ваше соединение на:

connect(ui->button2, SIGNAL(clicked(bool)), ui->button1, SLOT(setChecked(bool))); 
...