要在列表上显示的对象的QVector(Widget或Model)

QVector of objects to display on List (Widget or Model)?

本文关键字:Widget Model QVector 对象 列表 显示      更新时间:2023-10-16

所以我得到了一个Qvector,它包含"contact"类的对象。。。。到目前为止,联系人类别如下:

class contact {
        QString firstName;
        QString lastName;
        QString email;
        QString age;
        QString imgSrc;
public:
   contact();
   contact(QString fName, QString lname, QString emailAdd, QString new_Age, QString img);
   QString getPerson(); // return  "James Smith 34" which i add to listwidget   
};

这很琐碎,我遇到的问题是,对我来说,以列表格式显示这些数据最有效的方法是什么,即

Adam Smith 34

John Smith 43

我应该使用一个基本的列表小部件吗??(考虑到我必须将信息按升序和降序排序…

还是使用列表视图??但是哪种型号??

您将拥有子类QAbstractTableModel,以便提供读取联系信息的模型接口,请阅读此处的文档。您不需要麻烦代理,因为您只是在显示文本。

默认的QTableView应该足够了,记住在QAbstractTableModel中实现表头数据方法,否则在视图中看不到列表头标签。

要提供排序功能,您需要在模型和视图之间提供自定义QSortFilterProxyModel。这些文档提供了如何使用它的好例子

Qt的MVC框架一开始可能非常令人生畏,但一旦你了解了它的模块化结构,你就清楚了需要做什么才能获得某些功能。它非常强大,但有一点学习曲线。