Как создать кнопку рядом с текстом заголовка в QTreeView?

Мне нужно создать кнопку рядом с текстом заголовка, как это для сортировки.

Требования следующие:

  • кнопка и текст заголовка должны быть в группе для выравнивания
  • когда я нажимаю на кнопку up_arrow, список будет отсортирован (на рисунке он не отсортирован:D), а значок изменится на down_arrow для сортировки в обратном порядке.

Как я могу это сделать?

1 ответ

Если вы довольны внешним видом и поведением индикатора по умолчанию, вам будет достаточно следующего кода:

//Set up QTreeView, add model etc...
tree_view->setSortingEnabled(true);
QHeaderView* header = tree_view->header();
header->setSortIndicatorShown(true);

Если вы хотите настроить поведение сортировки, взгляните на QSortFilterProxyModel.

Для стилизации индикаторов вы можете использовать таблицу стилей Qt:

QHeaderView::down-arrow {
  image: url(down_arrow.png);
}

QHeaderView::up-arrow {
  image: url(up_arrow.png);
}
Другие вопросы по тегам