Wie erstellen Delegierter für QTreeWidget?

Hier ist, was ich versuche zu tun (alle Eltern und Kinder müssen eine schließen - Taste auf der rechten Seite, in der Zukunft, nur das betreffende Element wird in der Lage sein zu zeigen, die **close * * - Taste):

Wie erstellen Delegierter für QTreeWidget?

Meine Stellvertretung-code:

class CloseButton : public QItemDelegate
{
     Q_OBJECT

public:
     CloseButton( QObject* parent = 0 )
          : QItemDelegate( parent )
     {};

     QWidget* createEditor( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const
     {
          if ( index.column() == 1 )
          {
               QToolButton* button = new QToolButton( parent );
               button->setIcon( QIcon( CLOSE_ICON ) );
               //button->setFixedSize( 16, 16 );
               //button->setAutoRaise( true );
               //button->setVisible( true );

               CONNECT( button, SIGNAL( clicked() ), this, SLOT( emitCommitData() ) );

               return button;
          }
          return ( new QWidget );
     }

private slots:
     void emitCommitData()
     {
          emit commitData( qobject_cast< QWidget* >( sender() ) );
     }

private:
     //Q_DISABLE_COPY( CloseButton );
};

Mit QTreeWidget Anschluss code:

recipientsView()->setItemDelegateForColumn( 1, new CloseButton( this ) );

wo recipientsView() ist eine einfache QTreeWidget.

Problem ist, dass QToolButtons werden nicht angezeigt (es muss in der zweiten Spalte, also Spalte index in der Struktur ist 1). Was mache ich falsch?

Habe ich schon geprüft alle Qt-demo-Beispiele über die Delegierten und die ersten Google-Ergebnis über QItemDelegate's und ähnlichen Kram.

InformationsquelleAutor der Frage mosg | 2011-08-24

Schreibe einen Kommentar