QTableViewの高さを行数だけの最小の高さに設定したいのですがsetFixedHeight以外の方法はないでしょうか。
QTableViewの高さを最小に抑えたい場合、どうやって高さを設定するのでしょうか。
例
画面の一例として、QWidgetにQVBoxLayoutを設定して、QPushButton、QTableView, QPushButtonを載せるウィンドウとします。ゴールは次のようなイメージです。
QTableView::resizeRowsToContents() では表全体の高さについては、思ったような高さにできませんでした(下の画面)。
# これは各行の再描画だけなのかな?
QTableView::setFixedHeight()や次にコードイメージ示す方法であれば思ったような高さに設定できるのですが、ご存知の通りこのメンバ関数ではリテラルな高さを指定します。可能ならばリテラルな高さ(px)はなるべく指定したくありません。行数から自動で最小の高さを計算してもらいたいです。
c++
1 tableView->setMinimumHeight(1行分の高さ); 2 tableView->setMaximumHeight(1行分の高さ); 3 tableView->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
怪しいところ
私の手元では、QTableView::sizeHint()はQSize(256, 192)を返すのですが、これは何を指しているんですかね。だれがQTableViewをつかっても、どこで使ってもかならずこの値なんですかね。
この値を変えるために、QItemDelegateやQAbstractTableModelでsetHintをoverrideしてみたんですがダメでした。
# これもたぶん各行のヒントサイズを求めるだけで、全体の高さには影響しないんでしょうね。
環境
- Ubuntu 18.04
- GCC 4.8.5
- Qt5
あなたの回答
tips
プレビュー