gpt4 book ai didi

qt - QSqlTableModel 不作为对象工作,而是作为指针工作

转载 作者:行者123 更新时间:2023-12-03 05:36:55 24 4
gpt4 key购买 nike

我的同事发现了 QSqlTableModel 的下一个问题:

#define VARIANT_1
class SomeClass : public QWidget
{
Q_OBJECT

public:

SomeClass(QWidget *parent = 0, Qt::WFlags flags = 0)
{
ui.setupUi(this);

db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open()) {
return;
}

QSqlQuery query;
query.exec("create table person (id int primary key, "
"firstname varchar(20), lastname varchar(20))");
query.exec("insert into person values(101, 'Danny', 'Young')");
query.exec("insert into person values(102, 'Christine', 'Holand')");

#if defined( VARIANT_1 )
p_model = new QSqlTableModel( );
QSqlTableModel & model = *p_model;
#endif
model.setTable("person");
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
model.select();

model.setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
model.setHeaderData(1, Qt::Horizontal, QObject::tr("First name"));
model.setHeaderData(2, Qt::Horizontal, QObject::tr("Last name"));

ui.tableView->setModel(&model);

}

private:
Ui::qhlbClass ui;
QSqlDatabase db;
#if defined( VARIANT_1 )
QSqlTableModel * p_model;
#else
QSqlTableModel model;
#endif
};

如果定义了 VARIANT_1,则 tableView 显示正确的表,否则 - 不显示。 IE。如果 QSqlTableModel 作为对象表出现,不显示它的数据...... 如果 QSqlTableModel 作为指针出现,它就可以正常工作...... 你能评论一下吗?

最佳答案

QSqlTableModel 构造函数

QSqlTableModel ( QObject * parent = 0, QSqlDatabase db = QSqlDatabase() )

需要 QSqlDatabase 连接,该连接在构造 model 成员时不可用。

    QSqlDatabase db; // <-- not set
#if defined( VARIANT_1 )
QSqlTableModel * p_model;
#else
QSqlTableModel model; // default db isn't set
#endif

但在这里

db = QSqlDatabase::addDatabase("QSQLITE"); // a connection is set up
db.setDatabaseName(":memory:");
if (!db.open()) {
return;
}
. . .
#if defined( VARIANT_1 )
p_model = new QSqlTableModel( ); // <-- a default connection exists
QSqlTableModel & model = *p_model;

关于qt - QSqlTableModel 不作为对象工作,而是作为指针工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com