Russian Qt Forum
Ноябрь 25, 2024, 07:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как в сигнале от виджета внутри дерева определить элемент дерева?  (Прочитано 2551 раз)
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?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Апрель 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 ) )?
« Последнее редактирование: Апрель 27, 2011, 12:40 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Caduceus
Гость
« Ответ #2 : Апрель 27, 2011, 13:04 »

Вот черт, перемудрил. Дейтсивтельно есть уже прошитые в дерево чекбоксы Улыбающийся)
СПАСИБО
Записан
Caduceus
Гость
« Ответ #3 : Апрель 27, 2011, 14:17 »

Извиняюсь за тупой вопрос - а как отловить изменение статуса чекбокса в элементе дерева? Ловить itemChanged не предлагать - я так сделал - так он и на setData и на setText туда заходит. ТОлько чекбокс как отловить?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Апрель 27, 2011, 14:38 »

перегрузи
Цитировать
bool QStyledItemDelegate::editorEvent ( QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index )
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 23.