gpt4 book ai didi

c++ - 如果我不想在 QAbstractItemView 中实现选择,我应该返回什么值?

转载 作者:行者123 更新时间:2023-11-30 04:14:52 25 4
gpt4 key购买 nike

考虑通过仅实现 QAbstractItemModel 的纯函数定义的普通 Model 类。

我必须用饼图显示模型(如 this example 中所示),我想到从 QAbstractItemView 派生并重新实现其 protected 插槽。

事实是 QAbstractItemView 迫使我实现其他纯虚函数:

virtual QModelIndex moveCursor(CursorAction, Qt::KeyboardModifiers);
virtual int horizontalOffset() const;
virtual int verticalOffset() const;
virtual bool isIndexHidden(const QModelIndex&) const;
virtual void setSelection(const QRect&, QItemSelectionModel::SelectionFlags);
virtual QRegion visualRegionForSelection(const QItemSelection&) const;
virtual QRect visualRect (const QModelIndex&) const;
virtual void scrollTo(const QModelIndex&, ScrollHint);
virtual QModelIndex indexAt(const QPoint&) const;

大部分函数对我来说都是无用的,截至目前,我返回的是 0、默认值(例如 return QRect();)或无效值(例如 return QModelIndex())。

我的问题是:这些函数应该用于什么(是的,我是 RTFM,但它几乎没有告诉您应该返回什么值)?我是否可以像现在这样忽略它们,而不期望受到影响?

最佳答案

由于您是自己 View 的用户,因此完全取决于您。如果您不喜欢功能齐全的 View ,也没关系。这些函数用于选择和与 View 中的项目进行键盘/鼠标交互。如果不需要,最好不要提供该功能。

在许多不支持除滚动之外的交互的只读 View 中,从 QAbstractItemView 派生是毫无意义的。我有一个我使用的内部类。恕我直言,Qt 应该进一步拆分 QAbstractItemView 类,以便无交互 View 使用更简单的东西。

您可能会放心,因为 Qt 本身提供了许多未实现 QAbstractItemView 的 View 。就像每个 QML View :)

“ View ”的最低要求是它派生自QObject。毕竟,您可以拥有非图形用户界面的“ View ”,这些 View 使用来自某些模型的数据。代理模型是这样的:它们是附加到模型的无图形界面 View ,同时它们本身也是模型。对于源模型,代理就像一个 View 。在用户看来,代理就像一个模型。

关于c++ - 如果我不想在 QAbstractItemView 中实现选择,我应该返回什么值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com