這個是用QTreeView做的組織樹,使用CSS怎么實作左邊的藍色效果QTreeView{
color: rgb(255,255,255);
background-color:#15171a;
show-decoration-selected: 1;
}
QTreeView::item {
height: 30px;
background-color: #15171a;
}
QTreeView::item:selected:active{
color: rgb(255,255,255);
background-color: #282c32;
}
QTreeView::branch:selected:active{
background-color: #282c32;
}
QTreeView::item:hover, QTreeView::branch:hover {
background-color: #282c32;
}
QTreeView::item:selected:!active{
color: rgb(255,255,255);
background-color: #282c32;
}
QTreeView::branch {
background-color: #15171a;
}
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
image: url(:/images/branch_closed.png);
}
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings {
border-image: none;
image: url(:/images/branch_open.png);
}
uj5u.com熱心網友回復:
你說樣式表?照搬過去就可以了呀uj5u.com熱心網友回復:
我要的是左邊藍色的豎線uj5u.com熱心網友回復:
QSS寫的很清楚了:QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
image: url(:/images/branch_closed.png);
}
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings {
border-image: none;
image: url(:/images/branch_open.png);
}
不過沒必要用圖片,你可以直接用border:
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
border-left: none;
}
//有子選項 展開 并且選中的時候就顯示左側的藍色豎線。可以根據自己的需求自己調條件
QTreeView::branch:open:has-children:!has-siblings:selected,
QTreeView::branch:open:has-children:has-siblings:selected {
border-image: none;
border-left:5px solid blue;
}
uj5u.com熱心網友回復:
因為之前接觸的不多,所以用起來比較吃力;我試了下,第一級可以,第二級會到第二個branch左側,有沒有可能無論哪一級都在最左邊branch左側
uj5u.com熱心網友回復:
這個我也試了一下,二級的branch左側還一個一級branch,暫時沒弄清怎么讓那個一級的變狀態而二級的不變。
如果你非得實作那個效果的話可以換個思路:做一個左側是藍色邊框,底色是黑色的QWidget,讓QTreeView在選中某一行的時候item和branch都底色透明,再把QWidget移動到對應的位置,放到QTreeView的下一層,show()。
如果是想用圖片就把QWidget換成QLabel,放入圖片再挪入位置
uj5u.com熱心網友回復:
QSS寫的很清楚了:
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
image: url(:/images/branch_closed.png);
}
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings {
border-image: none;
image: url(:/images/branch_open.png);
}
不過沒必要用圖片,你可以直接用border:
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
border-left: none;
}
//有子選項 展開 并且選中的時候就顯示左側的藍色豎線。可以根據自己的需求自己調條件
QTreeView::branch:open:has-children:!has-siblings:selected,
QTreeView::branch:open:has-children:has-siblings:selected {
border-image: none;
border-left:5px solid blue;
}
因為之前接觸的不多,所以用起來比較吃力;我試了下,第一級可以,第二級會到第二個branch左側,有沒有可能無論哪一級都在最左邊branch左側
這個我也試了一下,二級的branch左側還一個一級branch,暫時沒弄清怎么讓那個一級的變狀態而二級的不變。
如果你非得實作那個效果的話可以換個思路:做一個左側是藍色邊框,底色是黑色的QWidget,讓QTreeView在選中某一行的時候item和branch都底色透明,再把QWidget移動到對應的位置,放到QTreeView的下一層,show()。
如果是想用圖片就把QWidget換成QLabel,放入圖片再挪入位置
謝謝,要是用其他方法我就不過來提問了
uj5u.com熱心網友回復:
這個最好的辦法就是自定義控制元件,重寫model
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/128007.html
標籤:Qt
