2015-02-24 93 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