【问题标题】:Using a QListView or similar effectively in Qt4在 Qt4 中有效地使用 QListView 或类似的
【发布时间】:2009-10-16 23:25:51
【问题描述】:

我正在慢慢习惯使用 Qt4 GUI 框架。在我正在进行的项目中,我需要能够在列表中添加/编辑/删除Team 对象。从 C#.NET 的角度来看,我会做类似的事情

List<Team> teams = new List<Team>();
teamsListBox.DataSource = teams;
teamsListBox.DisplayMember = "Name";

然后使用表单上的按钮进行添加/删除/编辑。

但是,据我所知,在 Qt 中没有简单的方法可以做到这一点。我查看了 QListView、QListWidget、QStandardItemModel 等的文档,但我不知道如何获取 C# 的等效 Qt 代码。

我的目标是在某种列表框中显示Teams,然后能够在运行时在其下方添加/删除/编辑Teams。

你会怎么做?

【问题讨论】:

    标签: c++ qt4


    【解决方案1】:

    您应该查看QAbstractItemModelQStandardItemModel,或者为您的团队创建一个自定义的 TeamItemModel 类,该类继承自 QAbstractItemModel。这些自定义类将管理项目在 Widget 中的显示方式,如 QListView。

    QString 的简单项目示例与QStringList

    QStringList list;
    list << "item1" << "item2" << "item3" << "item4" << "item5";
    ui->listView->setModel(new QStringListModel(list));
    

    然后添加/删除/更新Team 应该比您尝试的更容易。

    希望对您有所帮助。

    【讨论】:

    • 有没有更简单的方法可以避免子类化?就像从 QList&lt;Team&gt; 创建模型一样?
    • 有DirModel、ProxyModel和StandardItemModel,但没有列表模型。我认为您必须根据需要对 QAbstractItemModel 进行子类化。
    • Patrice,你能给出一个包含多于 1 列和几行 QListView 的 QStandardItemModel 的示例代码吗?
    • 您看过奇趣科技文档中的示例吗? doc.trolltech.com/4.1/qstandarditemmodel.html#details
    猜你喜欢
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 2015-03-13
    • 2016-05-10
    • 1970-01-01
    • 2021-11-08
    • 2015-05-27
    • 1970-01-01
    相关资源
    最近更新 更多