4

单击a 时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()总是假的。

4

2 回答 2

7

isDown总是返回 false,因为您在连接到clicked信号的插槽中检查它。当clicked您按下按钮并释放它时会发出信号。因此,每次按下和释放按钮时,都会发出 clicked 信号。

setCheckable()会为你工作。它将使按钮切换。因此,当您单击时,它将保持向下状态,直到您再次单击它为止。

于 2014-08-14T10:00:54.767 回答
3

它应该使用QAbstractButton::setCheckable(bool).

当设置为true它应该按照您希望它的方式运行。

于 2014-08-14T07:19:55.497 回答