有没有办法在禁用的QWidget上显示工具提示

时间:2016-10-26 20:35:40

标签: qt qwidget qtgui qmenu qaction

我有一个Qt表单,我有一个按钮和菜单。由于各种原因,我可以禁用某些元素,例如菜单中的按钮或某些操作。

有没有办法可以显示工具提示,或者鼠标悬停在禁用按钮或菜单项上,并解释为什么禁用它?

我正在使用Qt 4.8。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以根据QWidget的状态动态设置工具提示,也可以只是同时切换两者。从某个地方禁用/启用窗口小部件时,只需使用QWidget::setToolTip(...)调用QString,您希望在将鼠标悬停在给定窗口小部件上时显示工具提示。例如,如果您有一个名为toggleButton(bool toggleFlag)的公共插槽,可以切换按钮的启用设置,您可以这样做:

void MyWidget::toggleButton(bool toggleFlag) {
    this->ui->myButton->setEnabled(toggleFlag);
    this->ui->myButton->setToolTip(toggleFlag ? QString("Enabled wohoo!") : QString("Disabled because I like it"));
}

您当然也可以通过调用QWidget::isEnabled()来更改工具提示,并根据其返回值进行操作。由于您没有给出任何代码,我只能假设您切换按钮的方式,以便我现在能够为您提供所有代码。

更新:评论中指出,由于未接收鼠标事件,工具提示无法使用已禁用的小部件。这两个陈述都不正确(请注意,我使用了相同的工具提示消息,因为由于缺少最小的工作示例,我不想从头开始编写一个全新的项目,而是使用现有的一个项目):

  • 将已停用的按钮悬停会触发工具提示

enter image description here

  • 将启用的按钮悬停会触发工具提示

enter image description here