首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt StyleSheet用于QTreeView

Qt StyleSheet用于QTreeView
EN

Stack Overflow用户
提问于 2012-11-16 08:47:02
回答 1查看 4K关注 0票数 1

我目前正面临一个关于Qt和QTreeView样式表的问题。我只想用粗体写出树中选择的当前项。我以前做过研究,在许多论坛上给出的解决办法是:

代码语言:javascript
复制
myView->setStyleSheet("QTreeView::item:selected {font: bold;}");

但这对我不管用。我尝试了QTreeView {font: bold;},它可以工作(对每一项),QTreeView::item:selected {background-color:red;}也能工作。为什么字体对选定的项无效?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-09-17 12:43:57

很老的问题,但也许有人会发现它有用。我在使用QT5.3时也遇到了同样的问题。

我发现了一些关于qt中心的信息,它不能由样式表来完成。

是否有办法在QListWidget中更改所选项目的字体大小(或最小字体大小)?不,因为这种字体样式选项适用于QWidgets,所以您可以将字体(或其他类似字体大小)样式选项应用于整个QWidget (在本例中为QListWidget),而不是应用于派生QWidget (即QListWidget的选择项)的特殊行为。

我认为它也适用于QTreeView,因为我也无法改变它的风格。我可以改变边框,颜色,背景色,但不涉及字体。首先,我认为我必须重新实现paintEvent函数,因为我要重新实现QTreeView。这也没什么用。

解决方案:

但我找到了一些使用QStyledItemDelegate的解决办法。基本上,您必须将QTreeView子类,然后是子类QStyledItemDelegate。也许它可以在没有子类QTreeView的情况下工作,但是您必须以某种方式捕获一些带有选定和取消选择的项的信号,并调用setItemDelegateForRow和setItemDelegateForColumn (它应该只改变相交单元格)。

以这种方式重新实现QStyledItemDelegate::way:

代码语言:javascript
复制
QStyledItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    QStyleOptionViewItemV4 editedOpt = option;
    editedOpt.font = QFont("Arial", 23, 500);
    initStyleOption( &editedOpt, index );
    QStyledItemDelegate::paint(painter, editedOpt, index);
}

重新实现QTreeView::selectionChanged(或普通QTreeView和catch QItemSelectionModel::selectionChanged):

代码语言:javascript
复制
void CustomTreeView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
{
    foreach(const QModelIndex &index, selected.indexes()) {
        setItemDelegateForRow(index.row(), new CustomDelegate(this));
        setItemDelegateForColumn(index.column(), new CustomDelegate(this));
    }
    foreach(const QModelIndex &index, deselected.indexes()) {
        setItemDelegateForRow(index.row(), new QStyledItemDelegate(this));
        setItemDelegateForColumn(index.column(), new QStyledItemDelegate(this));
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13413156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档