Russian Qt Forum
Ноябрь 22, 2024, 22:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableView некоторые простые вопросы.  (Прочитано 3067 раз)
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
« Последнее редактирование: Март 31, 2015, 19:58 от Hrundel » Записан
Bepec
Гость
« Ответ #1 : Март 31, 2015, 20:53 »

Вроде не новичек, а вопросы по коду, которого нет Веселый

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   
Записан
Hrundel
Гость
« Ответ #2 : Март 31, 2015, 21:13 »

Bepec, я только что диплом закончил писать.
На Qt уже почти год ничего серьезного не делал. Так, царапал для себя.
Да и концепцию Model/View в Qt тоже всего разок разбирал.
Спасибо за подсказки. Хотя бы направление появилось, а то я уже устал тупо пялиться в документацию.
« Последнее редактирование: Март 31, 2015, 21:15 от Hrundel » Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #3 : Март 31, 2015, 21:14 »

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

4) Какой такой буквы нет? Смею предположить что
Код
C++ (Qt)
#include <QHeaderView>
 
поможет

А ведь ты прав.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.287 секунд. Запросов: 22.