Имеем код:
#include <QtGui>
#include "widget.h"
#include <QtSql>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
QTableView view(&w);
QSqlTableModel model;
QTextCodec *codec = QTextCodec::codecForName("CP1251");
QTextCodec::setCodecForCStrings(codec);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("test");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("2628381165");
if(db.open())
{}
else
QMessageBox::critical(0, "Ошибка соединения", "Невозможно соединиться с базой");
model.setTable("table1");
model.select();
model.setEditStrategy(QSqlTableModel::OnFieldChange);
view.setModel(&model) ;
w.show();
return a.exec();
}
Результат выполнения - смотреть прикрепленный файл
widget.jpg.
Почему не отображает данные?
В таблице есть 6 записей. Если делать так:
QSqlQuery query;
if(query.exec("SELECT * FROM table1;"))
{
QSqlRecord rec = query.record();
int nNumber = 0;
QString strName;
QString strPhone;
QString strEmail;
while(query.next())
{
nNumber = query.value(rec.indexOf("number")).toInt();
strName = query.value(rec.indexOf("name")).toString();
strPhone = query.value(rec.indexOf("phone")).toString();
strEmail = query.value(rec.indexOf("email")).toString();
}
}
то все прекрасно читает. Почему не читает при использовании интерьвью QTableView и QSqlTableModel?