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

Is there a way to show tooltip on disabled QWidget

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

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

我正在使用 Qt 4.8。

谢谢!

您可以根据 QWidget 的状态动态设置工具提示,或者同时简单地切换两者。在 disabling/enabling 从某个地方调用 QWidget::setToolTip(...) 的小部件时,您希望在将鼠标悬停在给定的小部件上时显示工具提示。例如,如果您有一个名为 toggleButton(bool toggleFlag) 的 public 插槽,它可以切换按钮的启用设置,您可以执行以下操作:

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() 并根据其 return 值来更改工具提示。由于您没有提供任何代码,我只能假设您是如何切换按钮的,所以我现在只能告诉您这些。


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

  • 将鼠标悬停在禁用的按钮上会触发工具提示

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