0

現在、水平方向のヘッダーラベルが付いたQTreeWidgetがあり、headerLabels のみを垂直方向に描画し、残りは水平方向に描画することを目的としています。

QTreeWidgetsのメソッドですべてを再実装したくないpaintEventので、ヘッダーラベルのpainteventを制御してから、スーパークラスを呼び出すことを考えていますpaintevent

これに沿った何か:

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

headerLabelsを挿入するときに各文字の後にアフターを挿入しようとしました\nが、それは本当に醜いハックであり、私が本当にやりたくないことです。

私の問題は、ヘッダーアイテムを取得する方法や、それらを垂直にペイントする方法がよくわからないことです。何か案は?

4

2 に答える 2

0

QHeaderView派生クラスを作成したいと思います。ここで、デフォルトの実装を変更します。paintEvent( QPaintEvent* );

次に、カスタムQHeaderView派生クラスをクラスの水平ヘッダーとしてインストールしますMyTreeWidget

于 2012-07-30T13:52:23.853 に答える
0

カスタム を使用している場合は、 を使用しpaintEvent()て文字を手動で配置できますQPainter::DrawText()。それらを1つずつ印刷してy毎回出力の座標を増やすか、Qt::TextWordWrapフラグを使用してスペースで自動的にラップするようにしてください(この場合、非常に狭い境界長方形を作成する必要があります試していません)。

于 2012-07-30T13:55:19.530 に答える