3

私は水平方向のheaderViewを持つQTableViewオブジェクトを持っています(垂直方向は隠しています)。qtableView からグリッドを削除するように setShowGrid(false) を設定しましたが、QTableView とその水平ヘッダーの間の区切り線を削除するにはどうすればよいですか。私は試した:

tableView->horizontalHeader()->setFrameShape(QFrame::VLine)

しかし、成功しませんでした。ありがとうございました

4

2 に答える 2

4

OK、paintSection メソッドを再実装しました。これで、必要なものができました。

void MyHeaderView::paintSection(QPainter *painter, const QRect &rect,  int logicalIndex) const
{
  QString data = model() -> headerData(logicalIndex, orientation(), Qt::DisplayRole).toString();

  QFontMetrics fm = painter -> fontMetrics();

  painter -> fillRect(rect, QBrush(QColor("white")));
  painter -> drawText(rect, Qt::AlignLeft, data);

  painter -> drawLine(rect.topRight(), rect.bottomRight());
}
于 2016-03-22T10:06:55.937 に答える
3

私と同じ「ボーダー」を意味するなら、それは現在のスタイルの一部です。したがって、それを取り除きたい場合は、スタイル シートを使用してカスタム スタイルを定義する必要があります。

以下に例を示します。

QString style = R"( QHeaderView::section {
                        border: 1px solid black;
                        border-bottom: 0px;             
                    }
                  )";

tableView->horizontalHeader()->setStyleSheet(style);

このスタイル シートは、ヘッダー セクションの全体的な境界線を 1 ピクセル幅の黒い線に設定し、下部の境界線を非表示にします。

注:ここではC++11 の生の文字列リテラルを使用しているので、混乱しないでください。ただの文字列です。

于 2016-03-22T08:15:58.070 に答える