将多个QSqlRecord传递到另一个顶级Widget的最佳实践?

时间:2018-08-10 04:37:50

标签: c++ qt sqlite qtableview qsqlquery

我有一个与QTableView(SQLite后端)绑定的QSqlTableModel。我需要允许用户从数千个记录/行中选择多达(如果不是全部)记录/行,然后将选择内容传递给对话框。

现在,我已经创建了一个自定义(持有人)类型,填充了它的QList并将指针传递到 对话框,如下所示:

#ifndef _ROW_HOLDER_H
#define _ROW_HOLDER_H


#include <QList>
#include <QString>
#include <QSqlRecord>

class RowHolder {

public:
    QString field1;
    QString field2;
    QString field3;
    explicit RowHolder(const QSqlRecord &record);
};

typedef QList<RowHolder> RowHolders;


#endif // _ROW_HOLDER_H

我将其传递给如下所示的对话框:

QSqlQuery query;
query.exec("... valid SQL query ...");
auto list = new RowHolders();
while (query.next()) {
    list->append(RowHolder(query.record()));
}
TheDialog dialog(list, this);
dialog.exec();
delete list;

它工作正常,但我对此感到不舒服,因为它(似乎)根本没有效率。这可以改善吗?有什么更好的方法吗?

0 个答案:

没有答案