QPushbutton中可能存在的错误

Possible bug in QPushbutton?

本文关键字:错误 存在 QPushbutton      更新时间:2023-10-16

我想实现类似于MS Office 2007中的功能区UI。我正在使用QPushbuttonQStacked Widget.按下QPushbutton时,将显示相应的Stacked Widget widget。我想以这样一种方式实现,当按下PushButton时,除非按下其他QPushButton,否则我们不应该再次按下它。因此,对于我QPushButton clicked() SLOT,我称之为:button->setDown(true);在我的第一行。根据文档:

如果此属性为 true,则按下该按钮。信号 如果将此属性设置为 真。

因此,当我在运行时单击它时,按钮显示为按下。那很好!然而,SIGNAL仍然被发射,即 pressed()clicked()被发射。我尝试使用不同的SIGNALSLOT组合来获得相同的属性。然而,它是一样的。我正在使用Qt 4.8.1。这里出了什么问题?谢谢。

如果要将按钮视觉外观设置为按下,可以使用setDown()功能。文档不是很清楚,但是:

如果此属性为 true,则按下该按钮。如果将此属性设置为 true,则不会发出按下 (( 和 clicked(( 的信号。

这并不意味着按下按钮时不会发出信号,而是在您调用setDown() 不会发出信号(在所有按钮启用并且第二次单击可能只是切换其状态之后(。

您可以做的是检查按钮是否在处理程序中按下(isDown()(以进行clicked()。作为替代方案,您可以将按钮更改为可检查(使用 setCheckable() ((:第二次单击按钮将"关闭"它(如果这是您需要的行为(。

将所有

按钮设置为可检查,然后继续阅读

http://qt-project.org/doc/qt-4.8/qbuttongroup.html