2014-09-11 5 views
1

У меня проблема с созданием содержимого QScrollArea, чтобы не рисовать фон.QScrollArea прозрачный фон на MacOS X

Так вот исходная картина, когда я применять не таблицу стилей: enter image description here Вы можете увидеть, что содержимое области прокрутки являются темнее общей раме.

Я нашел таблицу стилей, которую я могу применить к области прокрутки, чтобы фон был прозрачным. Вот таблица стилей я использую:

QScrollArea { background: transparent; } 
QScrollArea > QWidget > QWidget { background: transparent; } 

Проблема заключается в том, что, когда я делаю это, полоса прокрутки ScrollArea испортится: enter image description here

Вы видите? Полоса прокрутки теперь всегда видна и уродлива и прозрачна.

Как я могу заставить мою таблицу стилей не влиять на полосу прокрутки, но все же применяю ее к QScrollArea? Или какую другую таблицу стилей я должен применять вместо этого?

ответ

2

попытаться установить имя объекта для области прокрутки окна просмотра:

pScrollArea->viewport()->setObjectName("myViewport"); 

затем обратиться к нему с помощью свойства хэштегом в таблице стилей (также добавить GroupBox с момента, как я вижу его в скриншоте, ваша цель чтобы сделать их прозрачными, а):

QScrollArea, #myViewport, QGroupBox { 
    background: transparent; 
} 
+0

Речь не идет об определении фона QGroupBox (который не работал и даже сломал шрифты группового поля), но когда я использовал селектор #hashtag_named, и я применил прозрачный фон для виджета scrollarea и scrollcontents, то он работает как и ожидалось. Благодаря! – Googie

0

Я не могу добавить комментарий, поэтому напишу здесь. QScrollArea использует его настройки виджетов (для фона и т. Д.), Поэтому старайтесь не использовать это: QScrollArea { background: transparent; }, используйте только прозрачный фон для своих виджетов.

0

проблема заключается в том, что QScrollBar является подклассом QWidget, поэтому просто предназначаться окно просмотра с этим правилом:

pScrollArea->setStyleSheet("QScrollArea { background: transparent; }"); 
pScrollArea->viewport()->setStyleSheet(".QWidget { background: transparent; }"); 

Обратите внимание на точку перед QWidget, чтобы не было нацелено ни на каких дочерних элементов окна просмотра (т. Е. Любой контент в видовом пространстве, являющийся подклассом QWidget).

Смежные вопросы