小编Hur*_*ent的帖子

使用 QSortFilterProxyModel 对 Qml ListView 的数据进行排序。

我正在制作一个聊天客户端,我正在使用 qmlListView来显示“聊天室”中的所有消息。

我正在使用我自己的模型类,该类派生自QAbstractListModel用于存储用户所属的所有房间中的所有消息。

我希望所有消息都根据它们最初发送的时间戳排序,最新的消息应该出现在视图的底部,最旧的应该在顶部。

我还希望用户能够根据他们发送到哪个房间来过滤消息。我已经解决了这个问题。

这是我的自定义模型的声明

class MessageModel : public QAbstractListModel
{
public:
    enum MessageRoles {
            Id = Qt::UserRole + 1,
            RoomId = Qt::UserRole + 2,
            PersonId = Qt::UserRole + 3,
            PersonEmail = Qt::UserRole + 4,
            Created = Qt::UserRole + 5,
            Text = Qt::UserRole + 6
        };
    explicit MessageModel(QObject * parent = nullptr);
    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
    QHash<int, QByteArray> roleNames() const;
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 
    void …
Run Code Online (Sandbox Code Playgroud)

c++ qt qml

5
推荐指数
1
解决办法
6933
查看次数

标签 统计

c++ ×1

qml ×1

qt ×1