Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Caduceus от Апрель 27, 2011, 12:16



Название: Как в сигнале от виджета внутри дерева определить элемент дерева?
Отправлено: Caduceus от Апрель 27, 2011, 12:16
Я в айтемы дерева вставляю чекбоксы. Как в сигнале от этих чекбоксов узнать к какому айтему принадлежит пославший сигнал чекбокс?

Вставляю вот так
Код:
QCheckBox* rb = new QCheckBox( ui.treeWidget);
rb->setChecked(true);
ui.treeWidget->setItemWidget([b]curIt[/b], 0, rb);

connect(rb, SIGNAL(stateChanged ( int )),  this,  SLOT([b]MySlot[/b](int)))

Вот как в MySlot достучаться до curIt?


Название: Re: Как в сигнале от виджета внутри дерева определить элемент дерева?
Отправлено: GreatSnake от Апрель 27, 2011, 12:36
Как-то так:
Код
C++ (Qt)
void YourClass::MySlot( int )
{
QCheckBox* cb = qobject_cast< QCheckBox* >( sender() );
QTreeWidget* tw = qobject_cast< QTreeWidget* >( cb->parent()->parent() );
QTreeWidgetItem* citem = 0;
for( QTreeWidgetItemIterator it( tw ); *it; ++it )
{
if( tw->itemWidget( *it, 0 ) == cb )
{
citem = *it;
break;
}
}
}

А чем не устроил встроенный в дерево чекбокс( QTreeWidgetItem::setFlags( QTreeWidgetItem::flags() | Qt::ItemIsUserCheckable ) )?


Название: Re: Как в сигнале от виджета внутри дерева определить элемент дерева?
Отправлено: Caduceus от Апрель 27, 2011, 13:04
Вот черт, перемудрил. Дейтсивтельно есть уже прошитые в дерево чекбоксы :))
СПАСИБО


Название: Re: Как в сигнале от виджета внутри дерева определить элемент дерева?
Отправлено: Caduceus от Апрель 27, 2011, 14:17
Извиняюсь за тупой вопрос - а как отловить изменение статуса чекбокса в элементе дерева? Ловить itemChanged не предлагать - я так сделал - так он и на setData и на setText туда заходит. ТОлько чекбокс как отловить?


Название: Re: Как в сигнале от виджета внутри дерева определить элемент дерева?
Отправлено: GreatSnake от Апрель 27, 2011, 14:38
перегрузи
Цитировать
bool QStyledItemDelegate::editorEvent ( QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index )