Qt &QSS
Today task:
解决了qt中的一些控件无法使用qss的问题(如QProgressDialog 调节chunk的颜色,QMessageBox按钮的颜色问题)
1,对于QMessageBox,可以单独设置Button的qss
如:style += QPushButton(color: rgb(...), backround-color: rgb(...); height: 12px };
可是,有些时候,字体颜色无法使用qss所规定的
那么可以使用一下方法来使其生效。
1 QObjectList objectChildList = msgBox->children(); 2 for(int i=0; i<objectChildList.size(); i++) 3 { 4 5 QObject *pObj= objChildList.at(i); 6 if (pObj->inherits("QLabel")) 7 { 8 QWidget *pWidget = (QWidget*)pObj; 9 pWidget->setStyleSheet("color: rgb(255,255,255)"); 10 } 11 }
然后设置其sytle。
对于QProgressDialog
1 style +="QProgressDialog{ background-color: rgb(108, 110, 108)}"; 2 style +="QPushButton{color: rgb(255,255,255); background-color: rgb(66, 66, 66);height: 14px; width: 100px}"; 3 style +="QPushButton::hover{color: rgb(255,255,255); background-color: rgb(74, 74, 74);height: 14px; width: 100px}"; 4 5 QObjectList objChildList = qPDlg->children(); 6 for (int i = 0; i < objChildList.size(); i++) 7 { 8 QObject *pObj= objChildList.at(i); 9 if (pObj->inherits("QProgressBar")) 10 { 11 QWidget *pWidget = (QWidget*)pObj; 12 QProgressBar *pBWidget = (QProgressBar *)pWidget; 13 QString sheet; 14 sheet += "QProgressBar{color: rgb(255,255,255); background-color:rgb(48, 48, 48);border-radius: 2px;}"; 15 sheet += "QProgressBar::chunk{background-color:rgb(176,138,32);}"; 16 pWidget->setStyleSheet(sheet); 17 pBWidget->setAlignment(Qt::AlignCenter); 18 } 19 else if (pObj->inherits("QLabel")) 20 { 21 QWidget *pWidget = (QWidget*)pObj; 22 pWidget->setStyleSheet("color: rgb(255,255,255)"); 23 } 24 }
3, QTreeView stylesheet
1 QString style; 2 style +="QTreeView::Item{background-color:rgb(66, 66, 66);}"; 3 style +="QTreeView::Item::selected{background-color:rgb(0,54,162);}"; 4 style +="QTreeView::Item{color: rgb(255, 255, 255);}"; 5 6 style +="QTreeView::branch:has-siblings:!adjoins-item {background:rgb(0,54,162);}"; 7 style +="QTreeView::branch:has-siblings:adjoins-item {background:rgb(0,54,162);}"; 8 style +="QTreeView::branch:!has-children:!has-siblings:adjoins-item {background:rgb(66, 66, 66);}"; 9 style +="QTreeView::branch:has-children:!has-siblings:closed {background:rgb(108, 110, 108);}"; 10 style +="QTreeView::branch:has-children:!has-siblings:closed:selected {background:rgb(0,54,162);}"; 11 12 style +="QTreeView::branch:open:has-children:!has-siblings:selected {background:rgb(0,54,162);}"; 13 style +="QTreeView::branch:open:has-children:has-siblings:selected {background:rgb(0,54,162);}";//>>>>>>>>>>>> 14 15 // style +="QTreeView::branch:close:has-children:!has-siblings {background:rgb(108, 110, 108);}"; 16 // style +="QTreeView::branch:close:has-children:!has-siblings:selected {background:rgb(108, 110, 108);}"; 17 style +="QTreeView::branch:close:has-children:has-siblings {background:rgb(66, 66, 66);}"; 18 // style +="QTreeView::branch:close:has-children:has-siblings:selected {background:rgb(0,54,162);}"; 19 20 style +="QTreeView::branch:has-siblings:!adjoins-item {border-image: url(:/Icons/stylesheet-vline.png) 0;}"; 21 22 style +="QTreeView::branch:has-siblings:adjoins-item {border-image: url(:/Icons/stylesheet-branch-more.png) 0;}"; 23 24 style +="QTreeView::branch:!has-children:!has-siblings:adjoins-item {border-image: url(:/Icons/stylesheet-branch-end.png) 0 }"; 25 26 style +="QTreeView::branch:has-children:!has-siblings:closed,QTreeView::branch:closed:has-children:has-siblings {border-image: none;image: url(:/Icons/stylesheet-branch-closed.png);}"; 27 28 style +="QTreeView::branch:open:has-children:!has-siblings,QTreeView::branch:open:has-children:has-siblings {border-image: none;image: url(:/Icons/stylesheet-branch-open.png);}"; 29 30 style += "QTreeView{background: rgb(66, 66, 66);}"; 31 style += "QTreeView::HeaderView{background: rgb(66, 66, 66);}"; 32 33 style += "QHeaderView::section {background-color:rgb(66, 66, 66);color: white; border: 0 px; font-weight: bold;}"; 34 style += "QWidget{background: rgb(66, 66, 66); color: white;}"; 35 setStyleSheet(style);

浙公网安备 33010602011771号