QTreeWidget с не родной полосой прокрутки, когда фон изменился

Мне нужен QTreeWidget с прозрачным фоном, поэтому он имеет тот же цвет, что и родной светло-серый фон окна. Это прекрасно работает, установив прозрачный фон.

Проблема в том, что если я сделаю это, свиток станет не родным. Фон QTreeWidget по умолчанию «белый», и если я не изменю его, полоса прокрутки будет выглядеть как родная. Однако, если я изменю фон на «прозрачный», полоса прокрутки теряет свой родной вид.

Чтобы продемонстрировать это, я поместил два QTreeWidget рядом друг с другом, один с белым фоном по умолчанию, показывающим собственную полосу прокрутки, и один с фоном, измененным на прозрачный, показывающий не собственную полосу прокрутки: Скриншот

введите описание изображения здесь

Вот код:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

QHBoxLayout* layout = new QHBoxLayout(this);
ui->centralWidget->setLayout(layout);

QTreeWidget* tree1 = new QTreeWidget();
QTreeWidget* tree2 = new QTreeWidget();
layout->addWidget(tree1);
layout->addWidget(tree2);

// add ten items to each tree widget
for(int i=0; i<10; i++){
QString item_text = "item " + QString::number(i);

QTreeWidgetItem* item1 = new QTreeWidgetItem();
item1->setText(0, item_text);
tree1->addTopLevelItem(item1);

QTreeWidgetItem* item2 = new QTreeWidgetItem();
item2->setText(0, item_text);
tree2->addTopLevelItem(item2);
}

// change the background color of tree2 to the window color
//   this leads to a non native scroll bar for tree2
tree2->setStyleSheet("background-color: transparent;");
}

Как я могу иметь прозрачный фон при сохранении собственной полосы прокрутки?

1

Решение

Я наконец нашел решение. Мне нужно ограничить определение цвета фона QTreeWidget:

tree2->setStyleSheet("QTreeWidget {background-color: transparent;}");
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]