QTreeWidget с не родной полосой прокрутки, когда фон изменился - PullRequest
0 голосов
/ 08 октября 2018

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

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

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

enter image description here

Вот код:

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 Ответ

0 голосов
/ 08 октября 2018

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

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