Метки вертикального заголовка в QTreeWidget

У меня есть QTreeWidget с горизонтальными метками заголовков, и я намерен рисовать только headerLabels по вертикали, а остальные по горизонтали.

Я не хочу переопределять все в QTreeWidgets paintEvent метод, поэтому я думаю об управлении painttevent для меток заголовка, а затем вызов суперкласса paintevent,

Что-то вроде этого:

class MyTreeWidget: public QTreeWidget
{
  public void paintEvent (QPaintEvent *e)
  {
      ..... //Draw header labels vertically
      QTreeWidget::paintEvent(e);
  }
}

Я пытался вставить \n после каждого символа при вставке headerLabels, но это очень уродливый хак и то, что я не очень хочу делать.

Моя проблема в том, что я не знаю, как получить элементы заголовка или нарисовать их вертикально. Есть идеи?

2 ответа

Решение

Я верю, что вы хотите создать QHeaderViewкласс, где вы меняете реализацию по умолчанию для paintEvent( QPaintEvent* );

а затем установить свой кастом QHeaderViewкласс как ваш горизонтальный заголовок для вашего MyTreeWidget учебный класс.

Если вы используете кастом paintEvent()Вы можете разместить символы вручную с помощью QPainter::DrawText(), Либо распечатайте их по одному и увеличьте y координаты выходных данных каждый раз, или, возможно, попытаться использовать Qt::TextWordWrap флаг, чтобы они автоматически переносились на пробелы (вам нужно сделать очень узкий ограничивающий прямоугольник в этом случае, я думаю, я не пробовал).

Другие вопросы по тегам