Childs的QTreeWidget样式表颜色

时间:2015-02-24 15:49:52

标签: css qt qtreewidget qtreewidgetitem qstylesheet

系统:来自Repo的Linux Mint,QT Creator - > QT版本5.2,C ++)

我创建了一个我在QTreeView中使用的Customwidget

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

我想要的是为QTreeWidget设置样式表,包括正常模式和选定模式下的Backgroundcolor和Textcolor。

到目前为止:

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工作,Color(TextColor)没有(在两个案例中)。我知道当孩子的样式表被单独设置时,这将不起作用,但是窗口小部件本身及其所有子项(某些标签和按钮)都是“Sylesheet”免费。

TextColor的唯一Case“color:....”就是这种情况

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

但这不适用于“选定”状态

1 个答案:

答案 0 :(得分:0)

我的anser在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会将包含所有子项的列表返回到窗口小部件,然后您可以设置调色板。要查找颜色组列表,您可以在此处:http://qt-project.org/doc/qt-4.8/qpalette.html#setColor然后单击参数中的ColorGroup类型,然后您将在此处:http://qt-project.org/doc/qt-4.8/qpalette.html#ColorGroup-enum

祝你好运!