为 QTreeWidget 中的元素设置带有字体大小的样式表
Set StyleSheet with Font size for elements in QTreeWidget
我尝试为 header 和树形小部件的内容设置新的字体大小。
这里的问题是:我无法直接为内容设置字体大小,因为在我设置的那一刻,内容还没有出现。所以我可以设置 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()) + "}");
这是结果,header字号变了,内容没变。我哪里错了,或者您有其他解决方案吗?
理论上您可以调整 QTreeWidget::item
样式表子控件中的内容,但在这种情况下 Qt 忽略了 font-size,我不知道为什么。
或者您可以通过以下方式调整内容区域的字体大小:
ui.treeWidget->setFont(f);
以下对我有效:
ui->treeWidget->setStyleSheet("QTreeWidget { font-size: " + QString::number(f.pointSize()) + "pt; }");
请注意我添加了 QTreeWidget
和 pt;
。
我尝试为 header 和树形小部件的内容设置新的字体大小。
这里的问题是:我无法直接为内容设置字体大小,因为在我设置的那一刻,内容还没有出现。所以我可以设置 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()) + "}");
这是结果,header字号变了,内容没变。我哪里错了,或者您有其他解决方案吗?
理论上您可以调整 QTreeWidget::item
样式表子控件中的内容,但在这种情况下 Qt 忽略了 font-size,我不知道为什么。
或者您可以通过以下方式调整内容区域的字体大小:
ui.treeWidget->setFont(f);
以下对我有效:
ui->treeWidget->setStyleSheet("QTreeWidget { font-size: " + QString::number(f.pointSize()) + "pt; }");
请注意我添加了 QTreeWidget
和 pt;
。