А когда базовый класс использую все работает.
Делал все по мануалу.
table.h
Код:
#ifndef TABLE_H
#define TABLE_H
#include <QAbstractTableModel>
#include <QtSql/QSqlTableModel>
#include <QtSql>
// класс, определяющий модель таблицы
class mySqlTableModel : public QAbstractTableModel
{
Q_OBJECT
public:
explicit mySqlTableModel(QObject *parent = 0);
~mySqlTableModel();
// переопределяем обязательные функции
QVariant data(const QModelIndex &index, int role) const;
int rowCount(const QModelIndex &index) const;
int columnCount(const QModelIndex &index) const;
bool setData(const QModelIndex &index, const QVariant &value, int role);
Qt::ItemFlags flags(const QModelIndex &index) const;
bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role);
private:
QSqlTableModel *model;
};
#endif // TABLE_H
widget.h
Код:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
main.cpp
Код:
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
table.cpp
Код:
#include "table.h"
#include "widget.h"
#include "ui_widget.h"
#include <QtSql/QSqlDatabase>
#include <QtSql>
#include <QSqlError>
#include <QSqlRecord>
#include <QMessageBox>
#include <QtCore>
#include <QtGui>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//Подключаемся к БД MySql
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("ztu");
db.setUserName("root");
db.setHostName("localhost");
db.setPassword("lbvjy@5");
db.open();
mySqlTableModel *mymodel = new mySqlTableModel(this);
ui->tableView->setModel(mymodel);
QSqlTableModel *a = new QSqlTableModel(this);
a->setTable("people");
a->select();
ui->tableView_2->setModel(a);
}
Widget::~Widget()
{
delete ui;
}
mySqlTableModel::mySqlTableModel(QObject *parent):
QAbstractTableModel(parent)
{
model = new QSqlTableModel(this);
model->setTable("people");
model->select();
}
mySqlTableModel::~mySqlTableModel()
{
delete model;
}
QVariant mySqlTableModel::data(const QModelIndex &index, int role) const
{
if(!index.isValid())
return QVariant();
QVariant value = model->data(index, role);
if(role == Qt::DisplayRole)
return value;
return value;
}
bool mySqlTableModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role)
{
return model->setHeaderData(section,orientation,value,role);
}
int mySqlTableModel::rowCount(const QModelIndex &index) const
{
// qDebug()<< model->rowCount() << "row";
return model->rowCount(index);
}
int mySqlTableModel::columnCount(const QModelIndex &index) const
{
// qDebug() << model->columnCount() << "column";
return model->columnCount(index);
}
bool mySqlTableModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
return model->setData(index, value, role);
}
Qt::ItemFlags mySqlTableModel::flags(const QModelIndex &index) const
{
return model->flags(index);
}
С нижним вфыводом все нормально ( базовый класс),
а с верхним нет работает ( мой класс).