我有一个与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;
它工作正常,但我对此感到不舒服,因为它(似乎)根本没有效率。这可以改善吗?有什么更好的方法吗?