2012-09-24 63 views
4

我有一个工具按钮,当我点击它时(如果启用),我想禁用它,并在点击它时启用它(并禁用它)。问题是,当点击它时,我写了相应的插槽并且禁用了按钮。到目前为止它正在工作。但是一旦禁用并且您点击它,它就不会跳转到插槽,它会永久完全禁用。我使用了错误的功能还是错误的信号?如何启用禁用按钮

... 
bool mEnable = true; 

void Test::OnEnableButtonTriggered() { 
    mEnable = !mEnable; 
    ui.OnEnable->setEnabled(mEnable); 
} 
+1

从用户的角度来看,什么是能够单击禁用按钮的好处? –

+0

它就像一个切换按钮。当然,我可以使用不同的图标,但我认为禁用会起作用。想象一下,你想通过点击这个按钮来关闭可视化,然后你想打开它。我在很多工具中看到了这个,并且想自己试试 – ISTB

+1

不应该使用可检查的工具按钮作为它的右键吗?当没有按下时,您的可视化关闭,并​​且用户需要按下按钮以打开可视化(并且按钮保持关闭以可视化其状态)。 –

回答

3

您不能禁用按钮触发直接,但即使你可以,你最有可能不应该想这样做,因为这是相当刺激性。

我建议使用QCheckbox来实现你想要实现的目标。

如果你仍然想使用禁用的按钮,你可能想看看这篇文章:

Qt 4.4: disabled widgets receiving mouse events

+0

但是这个按钮和其他许多菜单按钮一起在我的menutoolbar中。使用复选框会有点奇怪,并且需要附近的标签 – ISTB

+2

我认为setCheckable可能是我的问题的解决方案:它在点击它时被推下并保持推动,直到您再次单击它 – ISTB

+1

在这种情况下,切换工具栏图标可能更直观。 但是,您仍然可以使用自定义事件过滤器接收事件。 – Mark