2

私は QT の感覚を得たいと思い、小さな 16 進エディターを作成することにしました。そのためには、スクロールできるウィジェットが必要です。いくつかの調査の後、QTextEdit がその目的のために QAbstractScrollArea から派生していることがわかりました。QAbstractScrollArea のドキュメントを読んでいるときに、「QAbstractScrollArea は指定されたウィジェットの所有権を取得します。」という説明の「setViewport()」メソッドを見つけました。これは、単独で表示されるウィジェットのコンテキストには適合しません。QScrollArea のコンテキストにのみ適合します。

独自のコンテンツを表示するスクロールバーを備えたウィジェットを QT で作成する適切な方法は何ですか?

4

1 に答える 1

2

QAbstactScrollArea「それ自体」は何も表示できず、ドキュメントには次のように明確に記載されています。

QAbstractScrollArea は、スクロール領域の低レベルの抽象化です。この領域は、ビューポートと呼ばれる中央のウィジェットを提供します。このウィジェットでは、領域のコンテンツがスクロールされます (つまり、コンテンツの可視部分がビューポートにレンダリングされます)。

ビューポートの横には垂直スクロール バーがあり、その下には水平スクロール バーがあります。すべてのエリア コンテンツがビューポートに収まると、スクロール バーの Qt::ScrollBarPolicy に応じて、各スクロール バーを表示または非表示にすることができます。スクロール バーが非表示の場合、使用可能なすべてのスペースをカバーするためにビューポートが拡張されます。スクロール バーが再び表示されると、スクロール バー用のスペースを確保するためにビューポートが縮小されます。

自体がビューポートの所有権を取得するため、QAbstractScrollAreaまったく問題なく、気にする必要はありません。QAbstractScrolArea + Viewportアイテムの所有権を取得するということは、それが持ち主とともに破壊される。

于 2012-08-13T05:48:28.193 に答える