qt - QTreeView 单元格选择突出显示调整大小
问题描述
有什么方法可以自定义 QTreeView 项目的焦点矩形大小吗?我已经查看了 QStyledItemDelegate 的paint() 事件的源代码,其中有对 textRect 的查询,但是我没有找到调整焦点矩形大小的方法,它只绘制了包含文本的单元格的一部分,我需要焦点矩形填充整个单元格矩形。有什么帮助吗?
单元格焦点矩形示例
解决方案
默认选择突出显示取决于当前的应用程序样式。在 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;
}
};
推荐阅读
- javascript - 如何更改 Anychart 点图的颜色。?
- r - 在 R 中指定错误消息的调用函数
- opendaylight - 我们应该使用 READ 交易吗?
- angular - 错误单击过滤器导致的行
- java - 将变量传递给有意图的两个活动
- oracle - oracle sql如何获取星期几
- mysql - 使用 mysql 创建新项目时找不到“config/databases/mysql.yml”
- delphi - DynArraySize() 只能在最多 649 个整数元素的数组中正常工作
- javascript - 如何创建动态字段的 Ant Design 组
- python - Python,如何获取每个文件的唯一 ID 数并将每个文件的文件名和唯一 ID 存储在 csv 文件中?