1

我想实现类似于MS Office 2007中的Ribbon UI的东西。我正在使用's 和. 当按下 a 时,显示对应的 from 。我想以这样的方式实现,当按下 a 时,我们不应该再次按下它,除非按下其他按钮。所以对于我来说,我称之为:在我的第一行。根据文档:QPushbuttonQStacked WidgetQPushbuttonwidgetStacked WidgetPushButtonQPushButtonclicked() SLOTQPushButtonbutton->setDown(true);

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

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

4

2 回答 2

3

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

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

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

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

于 2013-02-25T12:56:20.660 回答
0

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

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

于 2013-02-25T21:03:58.967 回答