Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt4] скрытие столбцов QTableView, не удаётся скрыть столбцы в таблице  
V
    Опции темы
SilverMax
Дата 5.12.2009, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



Добрый вечер!

Вопрос в следующем:

   Есть QTableView, есть QSqlRelationalTableModel. QSqlRelationalTableModel делает выборку из таблицы MySQL. Результат направляется в QTableView. Необходимо скрыть к примеру столбец "0"(ID). 
   Пробовал через 
Код
void QTableView::setColumnHidden ( int column, bool hide )
, через 
Код
void QTableView::hideColumn ( int column )
, эти два метода не имеют эффекта с моей таблицей. 
   Пробовал через 
Код
bool QAbstractItemModel::removeColumn ( int column, const QModelIndex & parent = QModelIndex() )
, это столбец скрывает, но, поскольку я скрываю поле "ID" таблицы БД, то некорректно работает удаление.

Код

model = new QSqlRelationalTableModel(u_ui->tvUsers, QSqlDatabase::database("db"));
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setTable("t_user");
....
//model->removeColumn(0, u_ui->tvUsers->currentIndex());
//model->removeColumn(1, u_ui->tvUsers->currentIndex());
u_ui->tvUsers->setColumnHidden(0, true);
u_ui->tvUsers->setColumnHidden(2, true);
//u_ui->tvUsers->hideColumn(0);
//u_ui->tvUsers->hideColumn(2);
u_ui->tvUsers->show();


возможно что-то неверно в настройках отображения QTableView?
Подскажите пожалуйста.
PM   Вверх
SABROG
Дата 6.12.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



А если так попробовать?

Код

u_ui->tvUsers->setColumnHidden(model->fieldIndex("ID"), true);


Возможно логическая позиция колонки отличается от физической. И возможно есть смысл скрывать колонки уже после метода 
Код

u_ui->tvUsers->show();


С другой стороны, если у tvUsers есть родитель, то метод show() вообще не нужен. Это при условии, что не планируется делать логику hide/show.

Это сообщение отредактировал(а) SABROG - 6.12.2009, 13:16


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
SilverMax
Дата 6.12.2009, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



Код

//    u_ui->tvUsers->show();
    u_ui->tvUsers->setColumnHidden(model->fieldIndex("id_user"), true);
    u_ui->tvUsers->setColumnHidden(model->fieldIndex("password"), true);


Что до, что после 
Код
u_ui->tvUsers->show();
,  одинаково упорно столбцы не скрываются. 
Правда сам  
Код
u_ui->tvUsers->show();
 действительно оказался лишним...

Те же самые операции на другой таблице:
Код

void TableWindow::InitTable()
{
    QSqlRelationalTableModel *model = new QSqlRelationalTableModel(t_ui->Table, QSqlDatabase::database("db"));
    model->setTable(*TableName);
    model->select();
    t_ui->Table->setModel(model);
    t_ui->Table->setColumnHidden(0, true);
}


Всё работает как часы, в чём проблема с первой?


Это сообщение отредактировал(а) SilverMax - 6.12.2009, 20:39
PM   Вверх
SilverMax
Дата 6.12.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



Проблема решена: в первой таблице я делал скрытие столбцов ДО установки модели в таблицу.

Код

    model->select();
    ...
    u_ui->tvUsers->setColumnHidden(0, true);
    u_ui->tvUsers->setColumnHidden(2, true);
    ...
    u_ui->tvUsers->setModel(model);


а не 

Код

    model->select();
    ...
    u_ui->tvUsers->setModel(model);
    u_ui->tvUsers->setColumnHidden(0, true);
    u_ui->tvUsers->setColumnHidden(2, true);


Спасибо, SABROG, за помощь. 

Это сообщение отредактировал(а) SilverMax - 6.12.2009, 22:56
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0686 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.