Когда 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()
всегда ложно.
isDown
всегда возвращает false, потому что вы проверяете его в слоте, подключенном к clicked
сигнал. clicked
Сигнал испускается, когда вы нажимаете кнопку и отпускаете ее. Таким образом, каждый раз, когда кнопка нажата и отпущена, выдается сигнал щелчка.
setCheckable()
будет работать для вас. Это заставит кнопку переключаться. Поэтому, когда вы нажмете, он будет оставаться в выключенном состоянии, пока вы не нажмете его снова.
Это должно работать из коробки, используя QAbstractButton::setCheckable(bool)
,
Когда установлено true
оно должно действовать так, как вы хотите.