Qt QSqlTableModel不';t用作对象,但用作指针
我的同事发现了QSqlTableModel的下一个问题:Qt QSqlTableModel不';t用作对象,但用作指针,qt,Qt,我的同事发现了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.setDataba
#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
};
如果定义了变量_1,则tableView显示正确的表,否则-不显示。
也就是说,如果QSqlTableModel作为一个对象表出现,而不显示它的数据。。。
如果QSqlTableModel作为指针出现,它可以正常工作。。。
你能评论一下吗?QSqlTableModel构造函数
QSqlTableModel ( QObject * parent = 0, QSqlDatabase db = QSqlDatabase() )
需要QSqlDatabase
连接,该连接在构建模型
成员时不可用
QSqlDatabase db; // <-- not set
#if defined( VARIANT_1 )
QSqlTableModel * p_model;
#else
QSqlTableModel model; // default db isn't set
#endif
qsqldb数据库//
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;