css - child 的 QTreeWidget 样式表颜色

标签 css qt qtreewidget qtreewidgetitem qstylesheet

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

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

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

我想要的是为 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 有效,Color (TextColor) 无效(在两种情况下)。我知道当子样式表单独设置时,这将不起作用,但小部件本身及其所有子项(一些标签和按钮)都是免费的“样式表”。

TextColor 的唯一 Case "color: .... "是这种情况

QWidget{
    color: rgb(85, 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

祝你好运!

关于css - child 的 QTreeWidget 样式表颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28700222/

相关文章:

javascript - 如何使输入在焦点上有文本?

c++ - QtSQL双插入数据库

c++ - QT:忽略复选框选择的关键事件

php - 如何在字符串中间添加内容?

javascript - 你能用Javascript控制GIF动画吗?

jquery - Foundation CSS 顶栏不透明度

c++ - QCalendarWidget - 如何突出显示日期

python - 按字母数字列对 PySide.QtGui.QTreeWidget 进行排序

c++ - QTreeWidgetItem 有两个 parent

python - PyQt : How to expand all children in a QTreeWidget