Вставлена новая модель в View - обновление всей таблицы ~500 записейМеняется строка - обновление 1 строки Добавление строки - обновление 1 строки
Вставлена новая модель в View - обновление всей таблицы~500 записейМеняется строка - обновление всей таблицы~500 записейДобавление строки - обновление всей таблицы ~500 записей
C++ (Qt)#ifndef MYSQLTABLEMODEL_H#define MYSQLTABLEMODEL_H #include <QSqlTableModel>#include <QWidget>class MySqlTableModel: public QSqlTableModel{ Q_OBJECTpublic: MySqlTableModel(QWidget *parent):QSqlTableModel(parent){ } ~MySqlTableModel(){} QVariant data(const QModelIndex &index,int role = Qt::DisplayRole) const{ QVariant value = QSqlQueryModel::data(index, role); if(role != Qt::DisplayRole) return value; if(index.column()==1){ emit sig(index.row()); return value; } return value; } signals: void sig(int row)const; };#endif // MYMODEL_H
C++ (Qt)#ifndef MYVIEW_H#define MYVIEW_H #include <QtGui\QTableView>#include <QMessageBox>#include "mysqltablemodel.h" class MyView: public QTableView{ Q_OBJECTpublic: MyView(QWidget *parent):QTableView(parent){ maxVisibleColumn = -1; } ~MyView(){} void setModel (QAbstractItemModel * model ){ connect(model, SIGNAL(sig(int)), this, SLOT(slotResizeRow(int))); QTableView :: setModel(model); } private: int maxVisibleColumn;public slots: void slotResizeRow(int row){ if(maxVisibleColumn < row){ maxVisibleColumn = row; resizeRowToContents(maxVisibleColumn); } }};#endif // MIVIEW_H