これが私がやろうとしていることです(すべての親と子は右側に閉じるボタンが必要です。将来的には、ホバーされたアイテムのみが**閉じる**ボタンを表示できるようになります):
私のデリゲートコード:
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 );
};
QTreeWidget
接続コード付き:
recipientsView()->setItemDelegateForColumn( 1, new CloseButton( this ) );
recipientsView()
単純なですQTreeWidget
。
問題は、QToolButton
がまったく表示されないことです (2 番目の列にある必要があります。つまり、ツリーの列インデックスは です1
)。私が間違っていることは何ですか?
デリゲートに関するすべての Qt デモの例と、QItemDelegate
および同様のものに関する最初の Google の結果を既に確認しました。