我正在制作一个聊天客户端,我正在使用 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)