Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Hrundel от Март 31, 2015, 19:44



Название: QTableView некоторые простые вопросы.
Отправлено: Hrundel от Март 31, 2015, 19:44
Всем привет.

Написал модель для таблицы от QAbstractTableModel. В ней хранятся данные в векторе.

Код
C++ (Qt)
struct TableData
{
      QString var1;
}
...
QVector<TableData* > tableData;

Запихнул модель в таблицу QTableView. Сразу возникла кучка вопросов:

1. После того как данные в модели обновились, как обновить таблицу?
2. В таблице почему-то присутствуют чек-боксы. Как их убрать?
3. Засунул в таблицу делегат, не понимаю как выводить содержание данных модели? Неужели через paint event?
4. Захотел убрать verticalHeader

Код
C++ (Qt)
tableView = new QTableView(this);
tableView->verticalHeader()->hide();
 

компиль ругается - говорит: "нет такой буквы". Хотя это из примера срисовано.

5. Хотел для загловков колонок названия дать -  даже рядом не понял как. Хотя и сделал header, но толку от него что-то не вижу.
6. Опять-таки хотел каждую строку tableView другим цветом покрасить, нифига не понимаю как.

Конечно, с QTableWidget проще, но Model/View более удобная по организации данных.
Поэтому решил не отступать.

Прошу помощи. Заранее благодарен.


P.S. Кстати, добавлю, что все на винде7 в MSVS2008 Qt 4.8.4


Название: Re: QTableView некоторые простые вопросы.
Отправлено: Bepec от Март 31, 2015, 20:53
Вроде не новичек, а вопросы по коду, которого нет :D

1) надо после изменения посылать
void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) [signal]

2) вы накосячили в методе выдачи данных. См. код.

3) делегат отрисовывает что-либо в зависимости от данных. Можете стандартные виджеты отрисовывать, можете свой нарисовать.

4) хз эт смотреть и вспоминать надо :)

5) надо переиначить
QVariant QAbstractItemModel::headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const [virtual]
или же просто вызывать setHeaderData.

6) это вы должны в data переопределить роль покраски :)
Qt::BackgroundColorRole   


Название: Re: QTableView некоторые простые вопросы.
Отправлено: Hrundel от Март 31, 2015, 21:13
Bepec, я только что диплом закончил писать.
На Qt уже почти год ничего серьезного не делал. Так, царапал для себя.
Да и концепцию Model/View в Qt тоже всего разок разбирал.
Спасибо за подсказки. Хотя бы направление появилось, а то я уже устал тупо пялиться в документацию.


Название: Re: QTableView некоторые простые вопросы.
Отправлено: kai666_73 от Март 31, 2015, 21:14
4) Какой такой буквы нет? Смею предположить что
Код
C++ (Qt)
#include <QHeaderView>
 
поможет


Название: Re: QTableView некоторые простые вопросы.
Отправлено: Hrundel от Март 31, 2015, 21:16
4) Какой такой буквы нет? Смею предположить что
Код
C++ (Qt)
#include <QHeaderView>
 
поможет

А ведь ты прав.