Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ [РЕШЕНО] Заголовок в QTableView

Автор: Kagami 26.11.2009, 15:12

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

Автор: Litkevich Yuriy 26.11.2009, 16:22

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


П.С. кажется тема была про воспроизведение пункта меню "разделить" и "щакрепить" в МСЭкселе

Автор: MoPDoBoPoT 26.11.2009, 16:29

Цитата(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

Интересно. Буду пробовать.
P.S. та тема называлась http://www.prog.org.ru/topic_9241_0.html

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

UPD2. А вот и http://qt.nokia.com/doc/4.6-snapshot/itemviews-frozencolumn.html от троллей :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)