Хочу написать класс для отображения данных из базы данных в QTableView. Не использую QSqlQueryModel потому что база данных MS SQL, данные буду получать путем вызова процедур.
Почти все работает, данные отображаются, только в ячейках отбражаются еще флажки какие-то.
Переобределял функцию flags(...) не помогло. В прикрепленном скриншоте она возвращает 0.
Как убрать эти флажки?
Или можно как-нибудь использовать MS SQL и QSqlQueryModel-QSqlQuery c setForwardOnly(false)?
Решено: Qt наследование от QAbstractTableModel
Модератор: Модераторы разделов
-
svas
- Сообщения: 203
Решено: Qt наследование от QAbstractTableModel
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
svas
- Сообщения: 203
Re: Решено: Qt наследование от QAbstractTableModel
Извините, разобрался. Глупый вопрос.
-
Atragor
- Сообщения: 681
- Статус: ...
Re: Решено: Qt наследование от QAbstractTableModel
А как разобрались?
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
-
svas
- Сообщения: 203
Re: Решено: Qt наследование от QAbstractTableModel
Нет не разобрался 
Делаю так
В tableView не видно ни одной записи, только названия столбцов.
Как правильно выполнить процедуру и возвратить QAbstractItemModel?
Или как убрать CheckBox'ы из таблицы при наследовании от QAbstractItemModel?
Делаю так
Код: Выделить всё
QAbstractItemModel *exec(const QString &proc)
{
QSqlQueryModel *m = new QSqlQueryModel;
m->setQuery("EXEC "+proc);
return m;
}
....
tableView->setModel(exec("SOME_PROC"));В tableView не видно ни одной записи, только названия столбцов.
Как правильно выполнить процедуру и возвратить QAbstractItemModel?
Или как убрать CheckBox'ы из таблицы при наследовании от QAbstractItemModel?
-
Denjs
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Решено: Qt наследование от QAbstractTableModel
У вас пример из "ассистанта" приведенный в статье про QSqlQueryModel работает?
-
svas
- Сообщения: 203
Re: Решено: Qt наследование от QAbstractTableModel
Да работает.
Полностью класс
Полностью класс
Код: Выделить всё
class ViewDataModel : public QAbstractTableModel
{
Q_OBJECT
public:
ViewDataModel(QSqlQuery &q, QObject *parent=0):
QAbstractTableModel(parent), mRowCount(0), mColumnCount(0)
{
mColumnCount = q.record().count();
mData.resize(mColumnCount);
while (q.next())
{
mRowCount++;
for (int i=0; i<mColumnCount; ++i)
{
mData[i].push_back(q.value(i));
}
}
}
~ViewDataModel() {}
QVariant data(const QModelIndex &, int role = Qt::DisplayRole) const
{
if (!index.isValid())
return QVariant();
return mData[index.column()][index.row()];
}
Qt::ItemFlags flags(const QModelIndex &) const { return Qt::ItemIsSelectable | Qt::ItemIsEnabled; }
int rowCount(const QModelIndex &parent = QModelIndex()) const
{
return parent.isValid() ? 0 : mRowCount;
}
int columnCount(const QModelIndex &parent = QModelIndex()) const
{
return parent.isValid() ? 0 : mColumnCount;
}
private:
int mRowCount;
int mColumnCount;
QVector<QVector<QVariant> > mData;
};-
svas
- Сообщения: 203
Re: Решено: Qt наследование от QAbstractTableModel
Разобрался.
В функции data если role == Qt::DisplayRole возвращаю данные, иначе QVariant()
В функции data если role == Qt::DisplayRole возвращаю данные, иначе QVariant()