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

时间:2012-03-26 21:55:23

标签: c++ qt

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

现在,当我使用工具窗口小部件时,QMainWindow显示为非活动状态,并且活动QPlainTextEdit中所选文本的选择背景呈现为非活动状态(略带灰色)但我想要像QMainWindow一样呈现的选择将处于活动状态,默认选择颜色不会使工具小部件失去焦点。

我如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

尝试一下这个:

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);