Вот что я пытаюсь сделать (все родители и дети должны иметь кнопку закрыть справа, в будущем только зависающий элемент сможет показать ** закрыть **):
Мой код делегата:
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
вообще не отображаются (он должен быть во втором столбце, т.е. индекс столбца в дереве 1
). Что я делаю неправильно?
Я проверил уже все примеры демонстрации Qt о делегатах и первый результат Google о QItemDelegate
и подобных материалах.