crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> qtdemo Star Deletgate, Нонсенс
ЙаМайскЫйПчОЛ
  опции профиля:
сообщение 24.5.2010, 13:32
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 154
Регистрация: 10.7.2008
Из: СПб
Пользователь №: 232

Спасибо сказали: 7 раз(а)




Репутация:   5  


Товарищи, приветсвую Вас.
и Сразу к вопросу
Если вы не поленитесь и откроете проект Star Delegate (демка)
И закаментите в файле stardelegate.cpp
строки 88 и 89
т.е. connect(editor, SIGNAL(editingFinished()),
this, SLOT(commitAndCloseEditor()));
перекомпилите и запустите, то наверное испытаете такой же шок, как и я...
Программа все равно будет правильно работать...
Более того, можете поиграться с этим сигналом и слотом, но в рамках данной программы они никогда не вызываються.
И вот вопрос... какие механизмы обеспечивают правильное поведение Делегата и Редактора,
и нахрена у товарищей из Qt написано что делегат работает через эту связку...???

Это не развлечения ради, а просто мой класс Редактора не работает так как должен, но об этом потом

Сообщение отредактировал ЙаМайскЫйПчОЛ - 24.5.2010, 13:33
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ЙаМайскЫйПчОЛ
  опции профиля:
сообщение 24.5.2010, 15:27
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 154
Регистрация: 10.7.2008
Из: СПб
Пользователь №: 232

Спасибо сказали: 7 раз(а)




Репутация:   5  


Вооотттт....
Так когдаже вызываеться commit???
И зачем описаны mouseReleaseEvent
У меня складываеться ощущение что они сами не знают зачем написали этот код
Но мне SpinBox не подходит у меня свой виджет редактирования также как и StarEditor

Я переопределил bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index);
для делегата и в теле
qDebug() << event;
return QStyledItemDelegate::editorEvent(event, model, option, index);

+

StarDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent)
{
connect(this, SIGNAL(commitData(QWidget *)), this, SLOT(commitMe(QWidget*)));
}

+

private slots:
void commitMe(QWidget *w){ qDebug() << "commit"; }
на выходе оказалось что

............

QMouseEvent(MouseButtonRelease, 1, 0, 0)
commit

Сообщение отредактировал ЙаМайскЫйПчОЛ - 24.5.2010, 15:33
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.1.2022, 13:54