有没有办法在禁用的 QWidget 上显示工具提示
Posted
技术标签:
【中文标题】有没有办法在禁用的 QWidget 上显示工具提示【英文标题】:Is there a way to show tooltip on disabled QWidget 【发布时间】:2016-10-26 20:35:39 【问题描述】:我有一个 Qt 表单,其中有一个按钮和菜单。由于各种原因,我可以禁用某些元素,例如按钮或菜单中的某些操作。
有没有一种方法可以显示工具提示,或者当鼠标悬停在禁用的按钮或菜单项上时,并解释为什么它被禁用?
我使用的是 Qt 4.8。
谢谢!
【问题讨论】:
由于某种原因无法编辑我的帖子:当我禁用小部件时,没有工具提示出现,因为禁用的小部件不接收鼠标事件 请提供一些代码。正如我所提到的(现在也更新了我的帖子)工具提示适用于启用和禁用的小部件。也许您正在对收到的事件做一些事情(请参阅here)。 【参考方案1】:您可以根据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()
来更改工具提示并根据其返回值进行操作。由于您没有提供任何代码,我只能假设您如何切换按钮,所以我现在只能给您。
更新:在 cmets 中指出,由于未接收鼠标事件,工具提示不适用于禁用的小部件。两种说法都不正确(请注意,我使用了相同的工具提示消息,因为由于缺少最小的工作示例,我不想从头开始编写一个全新的项目,而是使用我现有的项目):
悬停在禁用的按钮上会触发工具提示 悬停已启用的按钮会触发工具提示【讨论】:
谢谢,也许我应该在我的问题中提到它 - 我会更新它:当我禁用小部件时,没有工具提示出现,因为禁用的小部件不接收鼠标事件 确实如此。在发布之前我已经测试过了。将发布一些图像,以便您可以看到。我还确保我使用的是 Qt 4.8.6 套件,而不是我目前用于开发的 5.7。 抱歉,是的 - 我的逻辑有问题 - 现在我确实看到了禁用按钮上方的工具提示。 很高兴它成功了。顺便说一句,如果有疑问,请务必检查文档,看看您遇到的行为是否以某种方式记录在案。如果没有,那么您要么发现了错误,要么(正如您发现的那样)您的逻辑有问题。在大多数情况下,反映现实的是第二种情况,而不是第一种情况。 ;)以上是关于有没有办法在禁用的 QWidget 上显示工具提示的主要内容,如果未能解决你的问题,请参考以下文章