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

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

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

我如何做到这一点?

【问题讨论】:

    标签: c++ qt


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 2014-01-12
      • 2010-12-03
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多