2015-02-24 89 views
0

系統:Linux Mint的,Qt Creator的從回購 - > QT 5.2版,C++)QTreeWidget樣式顏色童車

我一直使用內部QTreeView則

OwnItem *OI = new OwnItem; 
QTreeWidgetItem *itemN = new QTreeWidgetItem(); 
ui->ProjektListe->addTopLevelItem(itemN); 
ui->ProjektListe->setItemWidget(itemN, 0, OI); 

創建Customwidget至極林我希望爲普通模式和選定模式下的QTreeWidget設置一個樣式表,包括背景顏色和文本顏色。

到目前爲止:

QTreeWidget::item{ 
    background-color: rgb(255, 255, 255); 
    color: rgb(255, 255, 0); 
} 

QTreeWidget::item:selected{ 
    background-color: #157efb; 
    color: rgb(255, 0, 0); 
} 

的問題是,BACKGROUNDCOLOR的作品,顏色(文本顏色)不是(在兩種情況下)。我知道,當孩子的樣式表單獨設置時,這將不起作用,但小部件本身及其所有孩子(一些標籤和按鈕)是「Sylesheet」免費的。

的唯一案例「顏色:......」的文字顏色的工作原理是這種情況下

QWidget{ 
    color: rgb(85, 0, 0); 
} 

但與「選擇」狀態

回答

0

我的雁在C++中沒有爲這不會工作CSS,但你可以創建一個QPalette然後設置要與功能void QPalette::setColor (ColorGroup group, ColorRole role, const QColor & color)所以你應該我是這樣的價值觀:

QTreeWidget tree(a); 
QPalette palette; 
palette.setColor(QPalette::Window, QColor(255, 255, 255)); 
palette.setColor(QPalette::WindowText, QColor(255, 255, 0)); 
palette.setColor(QPalette::Highlight, QColor(255, 0, 0)) 
palette.setColor(QPalette::HighlightedText, QColor(0, 0, 255)); 

QList<QTreeWidgetItem> treeItems = tree.findChildren<QTreeWidgetItem*>(); 
    foreach (QTreeWidgetItem *w : treeItems) { 
     w.setPalette(palette); 
    } 

的findChildren將返回一個LIS t與所有的孩子到小部件,然後你可以設置調色板。要找到顏色組的列表,你可以去這裏:http://qt-project.org/doc/qt-4.8/qpalette.html#setColor然後點擊參數中的ColorGroup類型,你將會在這裏:http://qt-project.org/doc/qt-4.8/qpalette.html#ColorGroup-enum

祝你好運!

+0

我剛剛實現了你的代碼,但它也不起作用。我也找不到在qtdocs中設置前景色的任何示例。 也許它不是這樣工作的。 (至少對於QWidgets)。 我剛剛實現了一個QItemDelegate。這工作得很好。 另一種解決方案是使用標準項目。在這種情況下,「顏色」屬性也起作用。我可以製作更多的柱子。 – 2015-02-25 18:09:43

+0

但我的自定義QWidget有點複雜,所以用QTreeWidgetItem重新創建這個並且Collumns不會是一件容易的事情 – 2015-02-25 18:17:06