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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Вопросы по QTableView  (Прочитано 13918 раз)
antipart
Гость
« Ответ #15 : Январь 05, 2012, 12:45 »

меня еще интересует, как разрешить пользователю менять порядок столбцов drag-n-drop'ом. установка tableView->horizontalHeader()->setMovable(true) не помогает, есть еще что-то?

Не знаю ... у меня все работает
Код:
    proxyModel = new QSortFilterProxyModel(this);
    proxyModel->setDynamicSortFilter(true);
    proxyModel->setSourceModel(userModel);

    userView->setModel(proxyModel);
    userView->setSortingEnabled(true);

   userView->verticalHeader()->hide();
    userView->horizontalHeader()->setMovable(true);
Записан
eJinn
Гость
« Ответ #16 : Май 28, 2013, 23:11 »

Добрый день!

после нажатия на треугольничек вызывается функция sort(int column, Qt::SortOrder order) модели. переопределяйте и сортируйте.
Спасибо за подсказку. Переопределил. Надо всего-лишь не сортировать пару столбцов. Как можно убрать треугольнички, которые появляются при нажатии на эти столбцы?
Записан
eJinn
Гость
« Ответ #17 : Май 29, 2013, 00:35 »

Добрый день!

после нажатия на треугольничек вызывается функция sort(int column, Qt::SortOrder order) модели. переопределяйте и сортируйте.
Спасибо за подсказку. Переопределил. Надо всего-лишь не сортировать пару столбцов. Как можно убрать треугольнички, которые появляются при нажатии на эти столбцы?
Вопрос решен:
Код:
...
QMainWindow View;
QTableView table;

connect( View->table->horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT( deactivate_column_sort(int) ) );
...

void mainWindow::deactivate_column_sort(int column )
{
    if( column != MODE_TABLE_COLUMN && column != DESCRIPTION_COLUMN )
        View->table->horizontalHeader()->setSortIndicatorShown( true );
    else
        View->table->horizontalHeader()->setSortIndicatorShown( false );
}
А сортировка модели model, подключеной в table: View->table->setModel( model );
переопределена подобным образом:
Код:
void mySqlTableModel::sort(int column, Qt::SortOrder order)
{
    if( column != MODE_TABLE_COLUMN && column != DESCRIPTION_COLUMN )
    {
        QSqlTableModel::sort( column, order );  // вызываем стандартную сортировку
    }
}

В результате столбцы с номерами MODE_TABLE_COLUMN и DESCRIPTION_COLUMN не сортируются, и треугольнички при нажатии на них не появляются.
Остальные столбцы работают по стандартной сортировке.
« Последнее редактирование: Май 29, 2013, 00:37 от eJinn » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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