为QTreeWidget中的元素设置带有字体大小的StyleSheet

时间:2017-01-12 09:54:40

标签: qt stylesheet qtreewidget qtreewidgetitem

我尝试为树窗口小部件的标题和内容设置新的字体大小。

问题在于:我无法直接为内容设置字体大小,因为在我设置的那一刻,内容还没有出现。所以我可以设置StyleSheet,所以当内容出现时,它会跟随StyleSheet。这是我的代码:

    int modifier = 2;
    /* Set font size for headers */
    QFont f = ui.treeWidget->headerItem()->font(0);
    if (f.pointSize() == 10)
        f.setPointSize(f.pointSize() - 1);
    else
        f.setPointSize(f.pointSize() - modifier);
    ui.treeWidget->headerItem()->setFont(0, f);
    ui.treeWidget->headerItem()->setFont(1, f);
    ui.treeWidget->headerItem()->setFont(2, f);

    /* Set font size for content */
    ui.treeWidget->setStyleSheet("{font-size: " + QString::number(f.pointSize()) + "}");

这是结果,标题字体大小已更改但内容未更改。我哪里错了,或者你有其他解决办法吗? enter image description here

2 个答案:

答案 0 :(得分:4)

以下适用于我:

ui->treeWidget->setStyleSheet("QTreeWidget { font-size: " + QString::number(f.pointSize()) + "pt; }");

请注意我添加了QTreeWidgetpt;

答案 1 :(得分:1)

理论上你可以调整dynamic v = new { A = "a" }; Dictionary<string, object> values = ((object)v) .GetType() .GetProperties() .ToDictionary(p => p.Name, p => p.GetValue(v)); 样式表子控件中的内容,但在这种情况下Qt忽略了字体大小,我不知道为什么。

或者,您可以通过下一种方式调整内容区域的字体大小:

QTreeWidget::item
相关问题