Qt:如何在非活动窗口中显示选定的文本

Posted

技术标签:

【中文标题】Qt:如何在非活动窗口中显示选定的文本【英文标题】:Qt: How to display selected text in an inactive window 【发布时间】:2012-03-26 21:55:22 【问题描述】:

我有一个不活动的QMainWindow 和一个QTabWidget 作为CentralWidget,其中包含多个QPlainTextEdits。除此之外,我还有一个单独的QWidget 标记为Qt::WindowStaysOnTopHintQt::Tool,我想将其用作QPlainTextEdits 的查找/替换工具。

现在,当我使用工具小部件时,QMainWindow 显示为非活动状态,活动 QPlainTextEdit 中选定文本的选择背景呈现为非活动状态(略带灰色),但我希望选择为像QMainWindow 一样渲染将处于活动状态,默认选择颜色不会失去对工具小部件的关注。

我如何做到这一点?

【问题讨论】:

【参考方案1】:

试试这个:

QPalette p = myInactiveWidget->palette();
for (int colorRole=0; colorRole<QPalette::NColorRoles; colorRole++) p.setColor(QPalette::Inactive, colorRole, p.color(QPalette::Active, colorRole));
myInactiveWidget->setPalette(p);

这应该使 (myInactiveWidget) 的非活动调色板与其活动调色板相同,这样它就不再看起来处于非活动状态。或者,如果您只关心文本选择块的颜色,那么这可能就足够了:

QPalette p = myInactiveWidget->palette();
p.setColor(QPalette::Inactive, QPalette::Highlight, p.color(QPalette::Active, QPalette::Highlight));
p.setColor(QPalette::Inactive, QPalette::HighlightedText, p.color(QPalette::Active, QPalette::HighlightedText));
myInactiveWidget->setPalette(p);

【讨论】:

以上是关于Qt:如何在非活动窗口中显示选定的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在textarea中的选定文本下方显示一个div?

如何在非活动类中显示进度对话框

如何将一个自定义列表的选定数据显示到同一活动的另一个自定义列表视图

QT编程时如何使按钮的颜色发生变化

如何首先在活动中显示选定的视图

在非活动类中显示对话框 1x/天