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::WindowStaysOnTopHint
和Qt::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:如何在非活动窗口中显示选定的文本的主要内容,如果未能解决你的问题,请参考以下文章