我有一个非活动QMainWindow
,QTabWidget
为CentralWidget
,其中包含多个QPlainTextEdits
。除此之外,我还有一个单独的QWidget
标记了Qt::WindowStaysOnTopHint
和Qt::Tool
,我想将其用作QPlainTextEdits
的查找/替换工具。
现在,当我使用工具窗口小部件时,QMainWindow
显示为非活动状态,并且活动QPlainTextEdit
中所选文本的选择背景呈现为非活动状态(略带灰色)但我想要像QMainWindow
一样呈现的选择将处于活动状态,默认选择颜色不会使工具小部件失去焦点。
我如何实现这一目标?
答案 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);