【问题标题】:Set userData for whole row?为整行设置 userData?
【发布时间】:2013-01-27 15:12:03
【问题描述】:

在 QTableView 中,我几乎没有与某些 QStandardItem 相关联的用户数据,

每一行都有一个用户数据(我使用行选择模式)

现在,当用户右键单击同一行上的任何项目时,他们会得到相同的数据。

所以我的问题是,我将用户数据设置在每一行的第一列,每次我得到一个点击事件,我都需要在同一行找到项目,并且首先在第一列,然后查找关联的用户数据。

这看起来很愚蠢,是否可以为整行设置数据?

【问题讨论】:

    标签: model qt4 qtableview


    【解决方案1】:

    您可以考虑使用包含数据列表的自定义 QAbstractTableModel。我目前有一个要求与您类似的项目,并且子类化 QAbstractTableModel 对我有用。

    在您的 QAbstractTableModel 中,创建一个按行返回数据项的方法,例如 DataClass* getRecord(int row);,然后在您的 QTableView 行单击事件中,将该方法与选定的行关联。

    void MyTable::showEditDialog()
    {
        MyModel* m = qobject_cast<MyModel*>(model());
        QModelIndexList selected = selectionModel()->selectedIndexes();
        MyDialog dialog(m->getRecord(selected[0].row()), this);
        if (dialog.exec() == QDialog::Accepted)
        {
            m->refresh(selected[0]);
            Q_EMIT contentEdited();
        }
    } // end_slot(MyTable::showEditDialog)
    

    检查 herehere 以获取 QAbstractTableModel 和模型视图编程的文档。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2017-08-31
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多