当设置交替行颜色时,QTreeWidget边框半径在滚动期间切换可见性

时间:2015-02-12 10:54:33

标签: c++ macos qt qtreewidget

我正在尝试设计一个带有border-radius的QTreeWidget。当我为其指定备用行颜色时,问题就出现了。当我不这样做时,它工作正常,并且滚动期间窗口小部件周围的边界半径始终可见。但是,当我使用备用行颜色设置滚动时,在偶数行位于顶部和底部期间,border-radius保持预期,而在奇数编号行中,它们会被遮蔽,具有小部件的外观和感觉没有边界半径。这是灰色行位于顶部和底部时的样子:

enter image description here

滚动一个单位或奇数个单位后,白色的行在末尾,这就是它的样子:

enter image description here

我该如何解决这个问题?在Windows中,由于滚动条的样式不同,右侧将始终由于滚动窗格而使边框半径黯然失色。有没有办法使它的行为与Mac滚动条一样?

我的样式表非常小:

#myTreeWidget {background-color: #C2C7CB; border-radius: 8px; }

我通过委托设置行的宽度:

class ItemDelegate : public QItemDelegate
{
public:
  ItemDelegate()
  {}
  QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const
  {
    return QSize(240,25);
  }
};

ItemDelegate *delegate = new ItemDelegate();

myTreeWidget = new QTreeWidget(this);
myTreeWidget->setObjectName(QString::fromUtf8("myTreeWidget"));
myTreeWidget->setAttribute(Qt::WA_MacShowFocusRect,false);
myTreeWidget->setGeometry(QRect(20, 10, 240, 375));
myTreeWidget->headerItem()->setHidden(true);
myTreeWidget->setItemDelegate(delegate);
myTreeWidget->setAlternatingRowColors(true);

我刚观察到一件奇怪的事。如果我从小部件中删除背景颜色,边框半径将完全消失。在任何情况下都不可见!

0 个答案:

没有答案