#include #include #include #include #include #include #include QString styleSheet = R"( QTreeView::item:selected { background-color: #CDE8FF; /* Blue highlight color */ color: black; /* text color when selected */ /* border-radius: 3px; rounded corners */ /* padding: 5px; Prevent clipping with border */ } QTreeView::item:selected:active { background-color: #CDE8FF; color: black; /* text color when selected */ } QTreeView::item:selected:!active { background-color: #D9D9D9; /* gray for inactive focus */ color: black; /* text color when selected */ } QTreeView::item:hover { background: #E5F3FF; } QTreeView::item:selected:hover { border: 1px solid #99D1FF; padding: -1px; /* keep the size consistent */ } )"; QTreeView* createTreeView() { auto tree = new QTreeWidget; tree->setColumnCount(3); for (int i = 0; i < 1000; ++i) { const auto cnt = i % 9; QString str; str.fill(QChar('A' + cnt), cnt + 1); auto item = new QTreeWidgetItem(QStringList() << str << str); item->setFlags(item->flags() | Qt::ItemIsEditable); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setCheckState(0, Qt::Unchecked); tree->addTopLevelItem(item); } return tree; } #include class Bla : public QStyledItemDelegate { virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override { QStyledItemDelegate::paint(painter, option, index);// Set a breakpoint here and step into QWindows11Style::drawPrimitive (src/plugins/styles/modernwindows/qwindows11style.cpp) } }; int main(int argc, char* argv[]) { QApplication app(argc, argv); //app.setStyleSheet("{ }"); // force painting through QStyleSheetStyle auto splitter = new QSplitter; auto text = new QTextEdit; auto tree = createTreeView(); tree->setItemDelegate(new Bla); //tree->setSortingEnabled(true); tree->setSelectionBehavior(QTreeView::SelectRows); tree->setSelectionMode(QTreeView::ExtendedSelection); QObject::connect(text, &QTextEdit::textChanged, tree, [&] { tree->setStyleSheet(text->toPlainText()); }); text->setPlainText(styleSheet); QMainWindow mw; auto tool = mw.addToolBar("Actions"); auto alternate = new QAction("Alternate"); alternate->setCheckable(true); tool->addAction(alternate); QObject::connect(alternate, &QAction::toggled, tree, [&](bool on) { tree->setAlternatingRowColors(on); }); splitter->addWidget(text); splitter->addWidget(tree); mw.setCentralWidget(splitter); mw.show(); return app.exec(); }