[newbie] QT4: model view control Elemente in das Model einfügen durch Mausklick



  • Hallo, ich habe eine kleine Baumartige Datenstruktur, die von QAbstractItemModel erbt. Momentan zeige ich die Items in einem QTreeView an.

    Ist es möglich, durch Mausklick (rechtsklick) in die View neue Elemente ins Model einzufügen? Ich habe dafür bereits die Methode

    bool QAbstractItemModl::insertRow(int row, const QModelIndex &index )
    ausfindig gemacht. Sie wird von mir überschrieben. Und fügt ein neues Element ein.

    Ist es nun möglich mit Hilfe eines Signal Slot Mechanismus genau diese Methode aufzurufen, nachdem ein Element in der View angeklickt wurde?
    Gruß und Danke Karl



  • Warum verwendest du nicht eines der Standardsignale aus QAbstractItemView von Qt:
    void activated ( const QModelIndex & index )
    void clicked ( const QModelIndex & index )
    void doubleClicked ( const QModelIndex & index )
    void entered ( const QModelIndex & index )
    void pressed ( const QModelIndex & index )

    Ich denke clicked/doubleClicked entspricht deinem Aktivieren und in dem Signal bekommst du auch direkt deinen ModelIndex.

    Ich habe es nicht ausprobiert, aber unter Qt3 ging es mit diesen Signals.

    mugglemaster



  • Hallo, ich bin gerade erst aus den Ferien zurück.

    Vielen Dank für deine Tipps. Clicked reicht leider nicht ganz aus, da ich gerne zwischen rechts- und links Mausklick unterscheiden würde. Links soll ganz normal das Editierfenster geöffnet werden, wie es standartmäßig implementiert ist, mit rechtsklick würde ich gerne ein Neues item einfügen.

    Kann ich zusätzlich die Maustasten abfragen, z.B. mit Hilfe der Methode mousePressEvent(QMouseEvent* event) oder etwas ähnlichem und mir daraus ein eigenes SIGNAL basteln?

    Weitere Schritte wären dann mit Hilfe von Drag n Drop auch die Reihenfolge im Baum zu verändern. Aber dem möchte ich mich erst widmen, wenn ich eine zufriedenstellende Lösung für das Einfügen von Items gefunden habe.

    Gruß

    Warum verwendest du nicht eines der Standardsignale aus QAbstractItemView von Qt:
    void activated ( const QModelIndex & index )
    void clicked ( const QModelIndex & index )
    void doubleClicked ( const QModelIndex & index )
    void entered ( const QModelIndex & index )
    void pressed ( const QModelIndex & index )

    Ich denke clicked/doubleClicked entspricht deinem Aktivieren und in dem Signal >bekommst du auch direkt deinen ModelIndex.

    Ich habe es nicht ausprobiert, aber unter Qt3 ging es mit diesen Signals.





  • anders als über eventhandling komme ich nicht an den Status der Maustasten ran? Ich habe leider kein Signal gefunden, welches mir auch Informationen über die Maus mitliefert...



  • afaik nicht..


Anmelden zum Antworten