Название: emit closeEditor Отправлено: Max Payne от Май 30, 2010, 11:41 Как послать сигнал emit closeEditor если все методы в ItemDelegate конст??
Компилятор ругаеться помогите пож... Код: void ComboDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const { QVariant data = index.model()->data(index, Qt::DisplayRole); switch(typeeditor) { case TBool: { QComboBox *cmbox = static_cast<QComboBox *>(editor); if (data.toString()=="true") { cmbox->setCurrentIndex(cmbox->findText("true")); //тут нужно послать emit closeEditor(editor,QAbstractItemDelegate::EditNextItem); //если писать свой слот нада передавать первым параметром QWidget * если передать QWidget *editor, опять ругаеться /////компилятор... } else { cmbox->setCurrentIndex(cmbox->findText("false")); } break; } } } Название: Re: emit closeEditor Отправлено: kibsoft от Май 30, 2010, 15:38 Че компилятор то пишет? Че за привычка выкладывать код без текста ошибки?!
Название: Re: emit closeEditor Отправлено: lit-uriy от Май 30, 2010, 17:36 Max Payne, а зачем ты пытаешься посылать сигнал closeEditor в функции, которая лишь заполняет виджет-редактор данными?
П.С. о том как посылать сигнал из константного метода смотри пример %QTDIR%\examples\itemviews\stardelegate файлы: stardelegate.cpp stardelegate.h Название: Re: emit closeEditor Отправлено: Max Payne от Май 31, 2010, 02:28 Вот такую ошибку пишет компилятор
Код: error: passing 'const ComboDelegate' as 'this' Автор: lit-uriy Цитата Max Payne, а зачем ты пытаешься посылать сигнал closeEditor в функции, которая лишь заполняет виджет-редактор данными? У меня втаблице два делегата комбобокс и едитлайн, нужно сделать чтоб при изменении индекса комбобокса на тру, я переходил к редактированию лайн едит... Я думал послать сигнал emit closeEditor(editor,QAbstractItemDelegate::EditNextItem); но изза константности методов не получилось... Название: Re: emit closeEditor Отправлено: lit-uriy от Май 31, 2010, 04:37 >>при изменении индекса комбобокса на тру
вот я именно про это. Ты пытаешься посылать сигнал, до того как пользователь сможет изменить КомбоБокс . >>но изза константности методов не получилось... насчёт этого я тебе дал ссылки Название: Re: emit closeEditor Отправлено: Max Payne от Май 31, 2010, 08:40 Тогда можна посилать из
Код: void ComboDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, И только потом я высылаю сигнал; Не могу понять толи я туплю, толи сигнал не высылаеться... editingFinished() высылаеться при выходе с void ComboDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const Название: Re: emit closeEditor Отправлено: lit-uriy от Май 31, 2010, 19:18 >>SLOT(ComboDelegate::ch_index(int))
а это что такое? Название: Re: emit closeEditor Отправлено: lit-uriy от Май 31, 2010, 19:20 >>QMessageBox::information(0,"","emit");
научись пользоваться qDebug() для отладки, заодно можешь увидеть матюги Qt в консоли, которые прольют свет на многие вещи Название: Re: emit closeEditor Отправлено: Max Payne от Май 31, 2010, 20:51 SLOT(ComboDelegate::ch_index(int))
а это что такое? это просто мой слот реализован в этом класе.... Название: Re: emit closeEditor Отправлено: lit-uriy от Май 31, 2010, 21:05 А он у тебя статический????
Название: Re: emit closeEditor Отправлено: Max Payne от Июнь 01, 2010, 00:26 нет
Код: void ComboDelegate::commitAndCloseEditor( ) Название: Re: emit closeEditor Отправлено: ритт от Июнь 01, 2010, 04:47 > QAbstractItemDelegate::closeEditor(editor,QAbstractItemDelegate::EditNextItem);
> emit closeEditor(editor); это откуда такое? т.е. зачем сигнал испускать два раза подряд? и вообще проблемы треда не понимаю - если уверен, что место для испускания closeEditor() подходящее, const_cast уже отменили, что ли? Название: Re: emit closeEditor Отправлено: Max Payne от Июнь 01, 2010, 16:57 это откуда такое? т.е. зачем сигнал испускать два раза подряд?
и вообще проблемы треда не понимаю - если уверен, что место для испускания closeEditor() подходящее, const_cast уже отменили, что ли? Я просто не могу сигнал поймать, не посылаеться сигнал для вызова моей функции... Из функции делегата... Название: Re: emit closeEditor Отправлено: lit-uriy от Июнь 01, 2010, 17:16 >>SLOT(ComboDelegate::ch_index(int))
слот в функции connect указан НЕ верно, смотри любые примеры записи для этой функции |