crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Тема закрытаНачать новую тему
> [РЕШЕНО] Заголовок в QTableView, Использовать столбец таблицы в качестве заголовка
Kagami
  опции профиля:
сообщение 26.11.2009, 15:12
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Есть QTableView. Я хочу чтобы при прокрутке в бок (таблица выходит за границы экрана) первый столбец оставался на месте. Хотелось бы либо запретить его прокручивать, либо использовать его в качестве горизонтального заголовка. Но что-то с ходу в документации не нашел как такое можно сделать. :(

Сообщение отредактировал Kagami - 26.11.2009, 17:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.11.2009, 16:22
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


по моему, на прогорге поднималась такая тема. Наиболее реализуемый вариант предлагался:
Два табличных представления, без зазора, в левом один столбец, в правом остальное.


П.С. кажется тема была про воспроизведение пункта меню "разделить" и "щакрепить" в МСЭкселе
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 26.11.2009, 16:29
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


Цитата(Kagami @ 26.11.2009, 15:12) *
использовать его в качестве горизонтального заголовка

Это можно сделать путем наследования от базовой модели и переопределения метода headerData(). Допустим ты используешь QSlqQueryModel в качестве модели, тода наследуемся от него и делаем примерно такой метод:
QVariant MySqlModel::headerData(int section, Qt::Orientation orientation,
                                                                          int role/* = Qt::DisplayRole*/) const
{
    if (section < 0 || role != Qt::DisplayRole)
        return QVariant();

    if (orientation == Qt::Vertical)
        return this->index(section, 0).data();  // 0 - number of column

    return QSlqQueryModel::headerData(section, orientation,  role); // horizontal header
}

Только потом во вьюшке надо будет нулевой столбец скрыть, а то дублируется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 26.11.2009, 16:38
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Интересно. Буду пробовать.
P.S. та тема называлась Зафиксировать колонки в QTableView как в Excel

UPD. Для варианта использования двух таблиц надо предусмотреть их синхронизацию при вертикальном скролле.

UPD2. А вот и готовое решение от троллей :)

Сообщение отредактировал Kagami - 26.11.2009, 16:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Тема закрытаНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 13:35