c++ - 要在列表(小部件或模型)上显示的对象的 QVector?

标签 c++ qt

所以我得到了一个 Qvector,它包含一个“联系人”类的对象……联系人类目前看起来是这样的:

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   
};

这很简单,我遇到的问题是什么是我以列表格式显示此数据的最有效方式,即

亚当·斯密 34

约翰·史密斯 43

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

还是我使用 ListView ??但是哪个型号??

最佳答案

您将拥有子类 QAbstractTableModel 以提供模型接口(interface)来读取联系信息,请阅读文档 here .您不需要为代理操心,因为您只是在显示文本。

默认的QTableView应该足够了,记得实现header data methodsQAbstractTableModel 中,否则您将不会在 View 中看到列标题标签。

要提供排序功能,您需要在模型和 View 之间提供自定义 QSortFilterProxyModeldocs提供有关如何使用它的很好的示例。

Qt 的 MVC framework一开始可能会让人望而生畏,但是一旦您理解了它的模块化结构,就会清楚您需要做什么才能获得某些功能。它的功能难以置信,但有一点学习曲线。

关于c++ - 要在列表(小部件或模型)上显示的对象的 QVector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852064/

相关文章:

c++ - opengl渲染半个圆柱体

c++ - 使用 std::ostream 作为类成员

c++ - Qt 找不到插槽

c++ - 如何使用 UTF-8 编码将 LPWSTR 转换为 char *

qt - 如何在单击按钮时打开第二个 qml 页面

c++ - 缓慢的纹理加载

c++ - C++中类与函数的模板类型推导?

c++ - 如何在没有范围的情况下使用枚举类

c++ - std::uniform_real_distribution - 获取所有可能的数字

python - 集成 Jython Cpython