Название: QTableView и QSqlTableModel
Отправлено: smirnoff от Январь 30, 2011, 18:08
Имеем код: #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?
Название: Re: QTableView и QSqlTableModel
Отправлено: sadhu от Январь 30, 2011, 23:19
QSqlTableModel model;//неверно, где задаёшь базу данных? QSqlTable model(0,db);//верно, задаёшь базу данных в конструкторе
//но в твоём случае достаточно поменять местами создание модели и подключения /* ибо "If db is not valid, the default database connection will be used." т.е : */ QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); QSqlTableModel model;//верно, используеться подключение по умолчанию
Название: Re: QTableView и QSqlTableModel
Отправлено: smirnoff от Январь 31, 2011, 12:57
QSqlTableModel model;//неверно, где задаёшь базу данных? QSqlTable model(0,db);//верно, задаёшь базу данных в конструкторе
//но в твоём случае достаточно поменять местами создание модели и подключения /* ибо "If db is not valid, the default database connection will be used." т.е : */ QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); QSqlTableModel model;//верно, используеться подключение по умолчанию
Спасибо. Теперь все ясно.
Название: Re: QTableView и QSqlTableModel
Отправлено: AdAn от Апрель 22, 2011, 14:24
У меня стоит lampp (xampp), как сделать так чтобы qt цеплялся на лампововский mysql?
|