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

Qt 有没有办法在禁用的QWidget上显示工具提示,qt,qwidget,qtgui,qmenu,qaction,Qt,Qwidget,Qtgui,Qmenu,Qaction,我有一个Qt表单,其中有一个按钮和菜单。由于各种原因,我可以禁用某些元素,例如按钮或菜单中的某些操作 有没有一种方法可以显示工具提示,或者当鼠标悬停在禁用的按钮或菜单项上时,可以解释为什么禁用它 我正在使用Qt4.8 谢谢 您可以根据QWidget的状态动态设置工具提示,或者只需同时切换两者。在从某处禁用/启用小部件时,只需使用QString调用QWidget::setToolTip(…),鼠标悬停在给定小部件上时,您希望工具提示显示出来。例如,如果您有一个名为toggleButton(bool

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

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

我正在使用Qt4.8


谢谢

您可以根据
QWidget
的状态动态设置工具提示,或者只需同时切换两者。在从某处禁用/启用小部件时,只需使用
QString
调用
QWidget::setToolTip(…)
,鼠标悬停在给定小部件上时,您希望工具提示显示出来。例如,如果您有一个名为
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()
更改工具提示,并根据其返回值进行操作。既然你没有给出任何代码,我只能假设你如何切换你的按钮,所以这就是我现在能给你的


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

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

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

谢谢,也许我应该在我的问题中提到它-我会更新它:当我禁用小部件时,不会显示工具提示,因为禁用的小部件不会收到鼠标事件,它们会。我在发布之前已经测试过了。将发布一些图像,以便您可以看到。我还确保我使用的是Qt 4.8.6工具包,而不是我目前用于开发的5.7工具包。对不起,是的-我的逻辑有一个错误-现在我确实看到了禁用按钮上的工具提示。很高兴它成功了。顺便说一句,当有疑问时,一定要检查文档,看看你所经历的行为是否以某种方式记录下来。如果没有,那么您要么发现了一个bug,要么(正如您所发现的)您的逻辑有问题。在大多数情况下,反映现实的是第二种情况,而不是第一种情况由于某些原因,无法编辑我的帖子:当我禁用小部件时,不会显示工具提示,因为禁用的小部件不会接收鼠标事件请提供一些代码。正如我所提到的(现在也更新了我的帖子),工具提示适用于启用和禁用的小部件。也许您正在对接收到的事件进行处理(请参阅)。