QPushButton setDown при нажатии

Когда QPushButton нажата, я хочу, чтобы он оставался нажатым до тех пор, пока не будет нажата снова.

void MainWindow::itemClicked(){

    QPushButton *clickedItem = qobject_cast<QPushButton *>(sender());

    qDebug() << clickedItem->isDown();

    if(!clickedItem->isDown())
        clickedItem->setDown(true);
    else
        clickedItem->setDown(false);
}

Это не похоже на работу. Это приведет к тому, что кнопка будет нажата до бесконечности.

clickedItem->isDown() всегда ложно.

2 ответа

Решение

isDown всегда возвращает ложь, потому что вы проверяете его в слоте, подключенном к clicked сигнал. clicked Сигнал испускается, когда вы нажимаете кнопку и отпускаете ее. Таким образом, каждый раз, когда кнопка нажата и отпущена, выдается сигнал щелчка.

setCheckable() будет работать для вас. Это заставит кнопку переключаться. Поэтому, когда вы нажмете, он будет оставаться в выключенном состоянии, пока вы не нажмете его снова.

Это должно работать из коробки, используя QAbstractButton::setCheckable(bool),

Когда установлено true оно должно действовать так, как вы хотите.

Другие вопросы по тегам