视觉上假装小部件具有焦点而实际上没有

时间:2018-07-10 10:08:21

标签: qt

我需要将样式化的小部件绘制为具有焦点的样式,而实际上却没有焦点。我的具体情况是一个工具/弹出列表框(包含QListView),该框应悬停在其他小部件上方,但它不应获得焦点(与QCompleter弹出框不同)。但是我想用相同的样式绘制好像它具有焦点,即当前行的蓝色突出显示而不是灰色(在Windows 10中为默认样式)。我能以某种方式假冒/假装一个小部件具有焦点但实际上却没有焦点,以便可以将其绘制为焦点吗?

我天真地尝试调用qApp->postEvent(myPopup, new QFocusEvent(QEvent::FocusIn));,但它没有做任何更改,并且弹出窗口看起来仍然没有聚焦。

我不想用样式表弄乱我的代码,或者不想以某种方式覆盖样式化的项目委托,因为这些感觉比简单的代码更像是hack。

1 个答案:

答案 0 :(得分:0)

您将必须实现一种代理样式,该样式将所有内容都描绘成好像被聚焦的那样,这也许是唯一一种不关心其他细节的非hacky通用方式。