轉自 https://blog.csdn.net/zh15237774494/article/details/88855289
樣式表(注意,這里的樣式表,只是為了實現我的灰色風格,和滾動條沒有關系,如果對這個不感興趣的,可以跳過這個代碼片)
/*************** QComboBox ******************/
QComboBox{
border-left:1pxsolidrgb(195,195,195);
border-right:1pxsolidrgb(195,195,195);
background:rgb(50,50,50);
color:white;
selection-background-color:rgb(80,52,158);
combobox-popup:0;
}
QComboBox:editable{
color:white;
font:20px;
}
QComboBox:enabled{
border:1pxsolidrgba(195,195,195,0);
selection-background-color:rgb(80,52,158);
}
QComboBoxQAbstractItemView{/*下拉框的顯示框效果*/
border:1pxsolidrgb(195,195,195);
border:2px;
}
QComboBox::item:hover{
background-color:rgb(195,195,195);
}
QComboBox::drop-down{
subcontrol-origin: padding;
subcontrol-position: center right;
width:15px;
height:15px;
padding:5px;
border-radius:3px;
border-right-color:rgb(195,195,195);
background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
stop:0rgba(255,255,255,155), stop:0.3rgba(160,160,164,155),
stop:0.7rgba(160,160,164,155), stop:1rgba(255,255,255,155));
}
QComboBox::down-arrow{
image:url(":/image/spectrum/downArrow.png");
width:15px;
height:15px;
border-radius:5px;
}
QComboBox::down-arrow:hover{
border-image:url(":/image/spectrum/downArrow.png");
width:15px;
height:15px;
border-radius:5px;
}
QComboBox::down-arrow:on{
top:0px;
left:0px;
}
/************** QComboBox 定制 ****************/
QComboBoxQAbstractItemView
{
padding:5px;
background:rgb(51,51,51);
}
QComboBoxQAbstractItemView::item
{
margin:1px0;
padding:5px;
font-size:15px;
background:rgb(60,60,60);
color:#fff;
font-family:"Microsoft YaHei";
}
QComboBoxQAbstractItemView::item:hover
{
background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
stop:0rgba(127,127,127,255), stop:0.3rgba(106,106,106,255),
stop:0.7rgba(82,82,82,255), stop:1rgba(82,82,82,255));
border-radius:2px;
}
QComboBoxQAbstractItemView::item:selected
{
background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1,
stop:0rgba(127,127,127,255), stop:0.3rgba(106,106,106,255),
stop:0.7rgba(82,82,82,255), stop:1rgba(82,82,82,255));
border-radius:2px;
}
到了這一步之后,應該會得到一個類似這樣的下拉框,不要急,一步一步來
image
再加入這樣一段代碼:
// 設置滾動條的重點在這
ui->com_clock->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
然后再運行一次(確保選擇項大于10,或者修改QCombobox的 maxVisibleItems = x x為整數)
這次應該就有滾動條了,效果是這樣的(我設置了maxVisibleItems = 5)
image
OK,滾動條有是有了,但有點難看,繼續用QSS美化
加上滾動條美化QSS
/******** combobox 滾動條 *********/
QComboBoxQScrollBar::vertical{/*主體部分*/
width:10px;
background:rgb(89,89,89);
border:none;
border-radius:5px;
}
QComboBoxQScrollBar::handle::vertical{/*滑塊主體*/
border-radius:5px;
width:10px;
background:rgb(173,173,173);
}
QComboBoxQScrollBar::handle::vertical::hover{
background:rgb(232,232,232);
}
QComboBoxQScrollBar::add-line::vertical{/*上箭頭*/
border:none;
}
QComboBoxQScrollBar::sub-line::vertical{/*下箭頭*/
border:none;
}
結果和最初的截圖一致了
image
參考博客:https://blog.csdn.net/Zzhouzhou237/article/details/73613278