Qt: Как отобразить выделенный текст в неактивном окне - PullRequest
1 голос
/ 27 марта 2012

У меня есть неактивный QMainWindow с QTabWidget в качестве CentralWidget, который содержит несколько QPlainTextEdits. Кроме того, у меня есть отдельная QWidget, помеченная Qt::WindowStaysOnTopHint и Qt::Tool, которую я хочу использовать в качестве инструмента поиска / замены для QPlainTextEdits.

Теперь, когда я использую виджет инструмента, QMainWindow отображается как неактивный, как и должно быть, а фон выделения выделенного текста в активном QPlainTextEdit отображается как неактивный (слегка серый), но я хочу, чтобы выделение было отображается так, как если бы QMainWindow был активен, с цветом выделения по умолчанию без потери фокуса на виджете инструмента.

Как мне этого добиться?

1 Ответ

3 голосов
/ 27 марта 2012

Попробуйте что-то такое:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...