Удалить фон QListView - PullRequest
       20

Удалить фон QListView

3 голосов
/ 09 августа 2011

Я хочу удалить фон моего QListView, чтобы фон ниже был виден. Как я могу это сделать?

Я пробовал setAttribute(Qt::WA_NoSystemBackground) и setAttribute(Qt::WA_NoBackground), но это ничего не изменило. Также я не могу переопределить paintEvent(), иначе он не рисует элементы.

Есть идеи?

Ответы [ 2 ]

8 голосов
/ 06 февраля 2012

Не забывайте, что QScrollArea, который является базовым классом для QListView, содержит «другой» виджет, который называется Viewport. Доступ к нему можно получить с помощью метода viewport ().

Для достижения прозрачности Вы можете просто позвонить:

viewport()->setAutoFillBackground( false );

и в зависимости от других настроек (то есть настроек родительского виджета) Вы должны увидеть фон.

1 голос
/ 09 августа 2011

Ответ зависит от того, является ли ваш QListView виджетом верхнего уровня. Документы QWidget по прозрачности объясняют подробно. Для виджета верхнего уровня это может быть просто:

view->setWindowOpacity(50);

Для виджета, который не является верхним уровнем, вы хотите установить фон на один с альфа-каналом:

QPalette palette = view->palette();
palette.setColor(QPalette::Background, Qt::transparent);
view->setPalette(palette);

Вы также должны быть в состоянии сделать то же самое с таблицами стилей:

view->setStyleSheet("background-color: transparent;");

Вам может потребоваться установить для autoFillBackground значение false, чтобы виджет не заполнял автоматически фон.

...