Могу ли я иметь более одной строки в заголовке таблицы в Qt?

Я использую Qt4 и у меня QTableView, который отображает данные с помощью настраиваемой модели. Я хотел бы иметь две строки в заголовке таблицы, в идеале с некоторыми ячейками в первой строке, охватывающей несколько столбцов. Возможно ли это?

4 ответов


Я тоже искал решение этой проблемы. Я нашел этот класс: HierarchicalHeaderView на qt-apps.org от пользователя Barmaglodd (Краснощеков Петр).

это решение выходит за рамки того, что вам (и мне) нужно. Кроме того, я не могу использовать их решение из-за их уведомления об авторских правах.

этот пост от blog.qt.digia.com Энди шоу показывает вам, как накладывать QComboBoxes на заголовок. В моем решении я сделал то же самое с другой вид заголовка. Это похоже на то, как они наложил QTableView на QTableView для примера замороженного столбца Qt. Для этого решения вам нужно подкласс QTableWidget и QHeaderView. Кроме того, если вы хотите, чтобы пользователь отрегулировал ширину столбца, которая требует дополнительной работы.

Tip: перегрузите SizeHint, чтобы дать высоту 2x нормальной высоты "основного" headerview, выровняйте текст основного вида заголовка снизу и нарисуйте другой headerview на в верхней части обычного, сделайте это в

showEvent(QShowEvent* e)

метод.


У меня была похожая проблема несколько строк headder из лист. Я решил его, используя простой "\n " в тексте заголовка столбца.


вы можете сделать пользовательский заголовок, сделав QTableWidgetItem, а затем с помощью setHorizontalHeaderItem(). Метод принимает номер столбца, поэтому я не уверен, что это позволит охватить несколько столбцов изначально-однако, по крайней мере, вы можете использовать то же самое QTableWidgetItem для нескольких столбцов.

что касается использования двух строк в заголовке, я не считаю, что это в настоящее время поддерживается. Однако вы, вероятно, можете добавить эту функциональность, свернув свой собственный производный класс QTableWidget Если вы не амбициозный.


под впечатлением HierarchicalHeaderView Я сделал из него порт Python и простую модель для отображения фреймов данных pandas с многоуровневыми заголовками (MultiIndex) в QTableView.

вот первые результаты dataframemodel. upd: это довольно медленно с большими кадрами данных