QTreeWidgetItem 不顯示默認三角形 && 自定義TreeWidgetItem的widget && 子項Item與頂層TopLevelItem頂端對其----Item設置QSS有影響。


//1-不顯示默認三角形----來自網友的答案, 很好用。
//如果不想要展開折疊圖標(三角圖標),可以用以下代碼
{
//隱藏根節點項前的圖標(展開折疊圖標)
ui.treeWidget->setRootIsDecorated(false);
//如果只是隱藏根點的展開折疊圖標而子節點保留,則只需要上面語句
ui.treeWidget->setStyleSheet("QTreeView::branch:has-children:!has-siblings:closed,\
QTreeView::branch:closed:has-children:has-siblings{border-image: none; image: none;}\
QTreeView::branch:open:has-children:!has-siblings,\

QTreeView::branch:open:has-children:has-siblings{border-image: none; image: none;}");

}

//如果想把展開折疊圖標(三角圖標)換成自己的圖標,可以用以下代碼
{
ui.treeWidget->setStyleSheet("QTreeView::branch:has-children:!has-siblings:closed,\
QTreeView::branch:closed:has-children:has-siblings{border-image: none; image: url(:/QtXmlTest/Resources/image/plus.png);}\
QTreeView::branch:open:has-children:!has-siblings,\
QTreeView::branch:open:has-children:has-siblings{border-image: none; image: url(:/QtXmlTest/Resources/image/minus.png);}");

}
原文鏈接:https://blog.csdn.net/jxbinwd/article/details/77507627
//2--自定義TreeWidgetItem

調用QTreeWidget::setItemWidget就可以了,並且,不會喪失QTreeWidgetItem跟鼠標事件的各默認聯動功能,依舊存在。
//3--子項Item與頂層TopLevelItem頂端對其
treeWidget->setIndentation(0);

在我們設置QTreeWidgetItem的QSS時候,默認Item和QTreeWidget左邊邊框之間是兩個部分。看起來很不好看。或者是,想設置當前激活的、或選中的Item的左邊框QSS時, Item的邊框效果,距離QTreeWidget的左邊框是有間距的,很不好看。


調用QTreeWidget::setIndentation(0), 然后設置不同層級Item的Padding-left,讓Text保持不同層級的效果。非常好的方案。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM