首页 > 解决方案 > QTreeView 单元格选择突出显示调整大小

问题描述

有什么方法可以自定义 QTreeView 项目的焦点矩形大小吗?我已经查看了 QStyledItemDelegate 的paint() 事件的源代码,其中有对 textRect 的查询,但是我没有找到调整焦点矩形大小的方法,它只绘制了包含文本的单元格的一部分,我需要焦点矩形填充整个单元格矩形。有什么帮助吗?

单元格焦点矩形示例

标签: qt

解决方案


默认选择突出显示取决于当前的应用程序样式。在 Windows 上,它是部分的,这就是其他 Windows 应用程序的行为方式。使用 Fusion 样式(Linux 上的默认设置),选择突出显示已经覆盖了整个项目矩形。在 Mac 上不确定。

无论如何,它可以通过在项目委托中设置的样式选项轻松控制。我们需要做的就是设置一个标志,幸运的是样式选项 init 函数是虚拟的。这与某些样式默认设置的标志相同。试试这个项目委托:

class HighlightDelegate : public QStyledItemDelegate
{
  public:
    using QStyledItemDelegate::QStyledItemDelegate;

  protected:
    void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const override
    {
      QStyledItemDelegate::initStyleOption(option, index);
      option->showDecorationSelected = true;
    }
};

推荐阅读