无法在来自 MySql 数据库的 C++ QTableView 中显示数据 QSqlQueryModel
Can´t display data QSqlQueryModel in a C++ QTableView from MySql Database
我不知道这个例子发生了什么。
我的连接没问题。
查询结果正常(见下面的应用程序输出)...但是我的 qtableview 是空的。
results screen with 9 empty lines
应用程序输出显示 9 行,这些行是我 table 的正确结果。 rowCount = 9...但是 table 视图完全是空的。
#include "pedidos.h"
#include "ui_pedidos.h"
Pedidos::Pedidos(QWidget *parent) :
QDialog(parent),
ui(new Ui::Pedidos)
{
ui->setupUi(this);
Login conn;
if(!conn.connOpen())
ui->label_pedidos_conn->setText("Falha na conexão ao Database");
else
ui->label_pedidos_conn->setText("Database Ok");
}
Pedidos::~Pedidos()
{
delete ui;
}
void Pedidos::on_pushButton_load_pedidos_clicked()
{
Login conn;
QSqlQueryModel *modal=new QSqlQueryModel();
QTableView *view = new QTableView;
conn.connOpen();
QSqlQuery *qry=new QSqlQuery(conn.mydb);
qry->prepare("SELECT id_pedido,id_user FROM pedido WHERE status=0");
qry->exec();
modal->setQuery(*qry);
modal->setHeaderData(0, Qt::Horizontal, "Pedido");
modal->setHeaderData(1, Qt::Horizontal, "Usuário");
ui->tableView_pedidos->setModel(modal); // empty
view->setModel(modal); // second window
view->show(); // doesn´t work too ( empty )
while(qry->next()){
QString usuario = qry->value(0).toString();
qDebug() << "id:" << usuario;
}
conn.connClose();
qDebug() << (modal->rowCount());
}
我的应用程序输出在这里:
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
Database Ok
name: "124"
name: "125"
name: "126"
name: "127"
name: "128"
name: "129"
name: "131"
name: "225"
name: "308"
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
9
您放在那里调试的这段代码是多余的,特别是 conn->connClose() 会在 tableView 可以使用它来获取数据之前关闭数据库。
while(qry->next()){
QString usuario = qry->value(0).toString();
qDebug() << "id:" << usuario;
}
conn.connClose(); <---- remove this line!!!
qDebug() << (modal->rowCount());
我不知道这个例子发生了什么。
我的连接没问题。
查询结果正常(见下面的应用程序输出)...但是我的 qtableview 是空的。
results screen with 9 empty lines
应用程序输出显示 9 行,这些行是我 table 的正确结果。 rowCount = 9...但是 table 视图完全是空的。
#include "pedidos.h"
#include "ui_pedidos.h"
Pedidos::Pedidos(QWidget *parent) :
QDialog(parent),
ui(new Ui::Pedidos)
{
ui->setupUi(this);
Login conn;
if(!conn.connOpen())
ui->label_pedidos_conn->setText("Falha na conexão ao Database");
else
ui->label_pedidos_conn->setText("Database Ok");
}
Pedidos::~Pedidos()
{
delete ui;
}
void Pedidos::on_pushButton_load_pedidos_clicked()
{
Login conn;
QSqlQueryModel *modal=new QSqlQueryModel();
QTableView *view = new QTableView;
conn.connOpen();
QSqlQuery *qry=new QSqlQuery(conn.mydb);
qry->prepare("SELECT id_pedido,id_user FROM pedido WHERE status=0");
qry->exec();
modal->setQuery(*qry);
modal->setHeaderData(0, Qt::Horizontal, "Pedido");
modal->setHeaderData(1, Qt::Horizontal, "Usuário");
ui->tableView_pedidos->setModel(modal); // empty
view->setModel(modal); // second window
view->show(); // doesn´t work too ( empty )
while(qry->next()){
QString usuario = qry->value(0).toString();
qDebug() << "id:" << usuario;
}
conn.connClose();
qDebug() << (modal->rowCount());
}
我的应用程序输出在这里:
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
Database Ok
name: "124"
name: "125"
name: "126"
name: "127"
name: "128"
name: "129"
name: "131"
name: "225"
name: "308"
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
9
您放在那里调试的这段代码是多余的,特别是 conn->connClose() 会在 tableView 可以使用它来获取数据之前关闭数据库。
while(qry->next()){
QString usuario = qry->value(0).toString();
qDebug() << "id:" << usuario;
}
conn.connClose(); <---- remove this line!!!
qDebug() << (modal->rowCount());