2

ここで TreeView/Model の概念を深く掘り下げますが、これまでのところ「理解している」ことです...

最初にMyTreeView () クラスをサブクラス化し、QTreeViewビルドインをMyOwnAbstractItemModel ()モデルに割り当てて拡張します (次のステップでサブクラス化します)。

class myTreeView(QTreeView):
    def __init__(self, parent=None):
        super(myTreeView, self).__init__(parent)
        self.myOwnAbstractModel = MyOwnAbstractItemModel()
        self.setModel(self.myOwnAbstractModel)

MyOwnAbstractItemModel ()のサブクラス化/記述を続けます。組み込みの QAbstractItemModel() クラスを「テンプレート」として使用して開始します...

class MyOwnAbstractItemModel(QAbstractItemModel):      
    def __init__(self, parent=None):
        super(MyOwnAbstractItemModel, self).__init__(parent)

私が理解していることから、モデルが機能するために宣言する必要があるMyOwnAbstractItemModel()メソッドがいくつかあります。これらの method() 名とその構文の説明の完全なリストはどこで入手できますか?

オンラインで投稿されたコード例を見ました。これらの事前定義されたメソッドには、特定の構文が既に事前定義されているようです...着信引数の数や予想される引数のタイプなど...たとえば、以下のメソッドは着信引数を取得しません(何が明確ではないその目的):

def mimeTypes(self):
    #print '\n mimeTypes(self)'
    types = QStringList()
    types.append('application/x-ets-qt4-instance')
    return types

しかし、この方法:

def dropMimeData(self, mimedata, action, row, column, parentIndex):
    parentNode = self.nodeFromIndex(parentIndex)

4 つの引数を取ります。ご意見をお聞かせください!よろしくお願いします。

4

2 に答える 2

2

Qt のドキュメントには、 docsで QAbstractItemModel をサブクラス化するために必要な最小限のメソッドがリストされています。

メソッド シグネチャは、特定の引数を受け入れるように設定されています。これは、モデルと対話するクラス (ビューなど) がそれらを呼び出す方法であるためです。あなたが与えたいくつかの例は、ドラッグアンドドロップ機能の実装に関係しています。

ツリー モデルでは、ノード データ クラスに特定のメソッドを実装して、ツリー ノードがそれ自体、その親、および子に関する情報を提供できるようにすることもできます。これをどのように行うかはあなた次第です。これらのノードは相互にリンクしてツリー階層を形成します。

モデル/ビューの内容は、最初は頭を包み込むのが少し難しいかもしれません。独自のツリー モデルを実装し、最初は標準のQTreeViewを使用してから、カスタム ビューを調べてそこからドラッグ アンド ドロップすることをお勧めします。PyQt ソースで提供される simpletreemodel の例は、必要最小限の優れた例です。必要なメソッド (および headerData) のみを実装し、ノードとして単純な TreeItem クラスを持ちます。

于 2014-02-25T06:34:30.900 に答える