В проекте необходимо задействовать рамки вокруг виджета. Чтобы самому не реализовывать решил вместо класса QWidget использовать QFrame. Там есть несколько стилей рисования этих самых рамок, НО под линуксом (как в KDE, так и в Gnome) всегда отображается одна и та же тема (KDE — StyledPanel; Gnome — Box), независимо от той, которую я задал в конструкторе.
Дальнейшие эксперименты показали, что изменить тему можно, но это необходимо сделать уже во время работы основного цикла программы. Самый простой способ — реализовать свой paintEvent и в нём в начале задавать необходимый стиль. Второй способ сгенерировать какое-нибудь событие (например, таймера) и в обработчике так же задать стиль.
Первый способ работает очень медленно. Метод setFrameStyle оказался довольно тяжёлым. Второй уж очень уродлив.
Если кто в курсе данной проблемы, то HELP!
P.S.: проверил в винде, там данной проблемы нету.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Крайне странно, только что проверил поведение в Gnome — стиль раки фрейма тот что я задал. Т.е. создал в дизайнере тестовое окошко, кинул в него 4 фрейма с разными стилями и сгенерил питоновский код (мне привычнее). При запуска все четыре фрейма имели свой заданый стиль. Если взглянуть в код, то там никаких изощрений нет:
Соответственно вместо QtGui.QFrame.StyledPanel задается для каждого своё.
А вообще если интересуют просто рамочки вокруг виджета, то крайне рекомендую посмотреть в соторону StyleSheets, намного удобнее, более гибко и, как по мне, более правильно. Так к примеру чтобы задать скругленную зеленую рамку вокруг виджета достаточно лишь:
Притом подобный подход применим для любого виджета поддерживающего Box Model (более подробно смотрите в документации Qt Style Sheets Reference).
За StyleSheet спасибо. Я уже забыл совсем про него.
На счёт отображения. Нашёл проблему в KDE. Я совсем забыл, что у меня вместо стандартной темы стоял QtCurve. Именно он всю «малину» и портил. С Гномом ситуация следующая. Дома поставил 32-битную Убунту, и всё отлично заработало. Но раньше я проверял на 64-битной. Возможно в этом проблема. Хотя я уже больше склоняюсь к тому, что скорее всего, как и в KDE, наустанавливал чего-то для настройки внешнего вида, вот и результат.
Может и так, я проверял как раз на Ubuntu 10.04 (amd64).