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 всегда возвращает false, потому что вы проверяете его в слоте, подключенном к clicked сигнал. clicked Сигнал испускается, когда вы нажимаете кнопку и отпускаете ее. Таким образом, каждый раз, когда кнопка нажата и отпущена, выдается сигнал щелчка.

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

5

Другие решения

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

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

3

По вопросам рекламы [email protected]