タイトルと同じように、ヘッダ(QHeaderView)を持つQTreeViewのスクロールバーを再描画すると、スクロールバーの高さがQTreeViewの高さになります。スクロールバーの高さはQTreeViewの高さマイナス以下PICのようなヘッダのheight.justに等しい: QTreeViewでスクロールバーの高さを指定する方法
答えて
問題に対する解決策は、Y軸上(QHeaderView
から取得constant_offset
値に垂直スクロールバーの位置を設定するかもしれません)。
これはそうようQTreeView
をサブクラス化することによって行うことができる:
class MyTreeView : public QTreeView
{
public:
MyTreeView(QWidget* parent = nullptr): QTreeView(parent){}
void updateVertScrollBar()
{
auto* ptr = verticalScrollBar();
QRect rect = ptr->geometry();
rect.setTop(header()->height());
ptr->setGeometry(rect);
}
void resizeEvent(QResizeEvent* ev) override
{
QTreeView::resizeEvent(ev);
updateVertScrollBar();
}
};
updateVertScrollBar
方法は、データがサンプル実装に充填された又は提示された直後の更新が毎に発生する可能性と呼ぶことができsizePolicy
に応じresizeEvent
- ウィジェットに対して実行されるさまざまなサイズ変更をカバーする必要があります。さらに収縮スクロールバーから左空白を削除
EDIT
はトリッキーになります。まず、QTreeView
がビューポートウィジェットとスクロールバーから構築されていることを示します。表示される問題は、ビューポートと垂直スクロールバーの幅(表示されている場合)が一致する必要があり、これが内部的に計算されるという事実に起因します。
私は、これらのコンポーネントのサイズを強制しようとすると、何かが起こっているので、トリッキーだと述べました。一部の更新はインプレースと呼ばれ、イベントループを通じて呼び出されるものもあります。 thisにチェックをして、そのコンセプトについてより詳細な情報を得ることができます。同様のアプローチはおそらくQTreeView
に適用されます。
基本的には、ビューポートの幅を引き伸ばす必要があります。これはおそらくresizeEvent
の間に行われるべきですが、viewport()->setGeometry()
のようなメソッドからの呼び出しはうまく終了しないかもしれません。ループに巻き込まれる可能性があります。 blockSignals
を試すかもしれませんが、これが役立つかどうかはわかりません。一般に、与えられたQt
ウィジェットの内部構造を混乱させたい場合は、少なくとも簡単にその実装を行うべきです。
- 1. (qt)qmlでスクロールバーの高さを一定にする方法
- 2. 高さ、スクロールバー付きコンテナを固定する方法
- 3. QTreeViewスクロールバーのスタイルシートカスタマイズの問題
- 4. フレックスボックスレイアウトでcssクラスの高さを指定する方法
- 5. メッセンジャーのスクロールバーの幅と高さをHtml/CSS/JavaScriptで固定する方法
- 6. ListViewで水平スクロールバーの高さを取得する方法
- 7. Wordpressでブートストラップを使ってフッターの高さを指定する方法は?
- 8. 高さが指定されている場合、divの高さを自動調整する方法は?
- 9. javafxスクロールバーの親指の太さをCSSでカスタマイズする方法は?
- 10. FrameLayoutの高さをLinearLayoutの高さに設定する方法
- 11. アプリエンジンで指定した高さと幅に画像をトリミングする方法 - python?
- 12. QSplitterのQTreeViewの初期サイズを設定する方法は?
- 13. QTreeviewの内容をペイントする方法
- 14. スクロールバーdivのサイズページの高さ
- 15. DIV - スクロールバーの高さが100%
- 16. ラベルの高さをオートサイズする方法(幅は指定しない)
- 17. ユーザーが指定した画像の高さを変更する方法(プロンプト)
- 18. YUI Panelで最大高さとスクロールバーを実装する方法は?
- 19. スクロールバーの高さを要素の高さと異ならせる
- 20. QTreeViewで孫を隠す方法
- 21. スクロールバーのスタイル設定方法
- 22. QTreeViewチェックボックスの作成方法
- 23. QTreeView/QFileSystemModelをクリアする方法
- 24. コンテンツの高さでOHAttributedLabelスケールの高さを設定する方法は?
- 25. フレックスでUITextFieldの指定された線を指定する方法は?
- 26. grid.arrangeでプロットの幅と高さを指定する
- 27. スクロールバーがページの高さの特定のパーセンテージに達したときにJavaScript関数をトリガする方法
- 28. ブラウザの高さではなく画面の高さで高さを設定する方法
- 29. スクロールバーのデフォルトの高さを取得
- 30. XAMLで行の高さをプログラムで設定する方法は?
これはできますが、ヘッダーには空白の隙間があり、その幅はスクロールバーの幅と同じです。ヘッダーで空白の隙間を削除するにはどうすればよいですか? – Lomuto
体験していることを示す画像を貼り付けます。スクロールバーの周りの興味のある領域だけで十分でしょう。 – Dusteh
[このように](https://1drv.ms/i/s!AuRlDm0ORHE_hN4McM_n9FAw1_8S8w) – Lomuto