Russian Qt Forum

Qt => Общие вопросы => Тема начата: Skala от Май 12, 2007, 09:07



Название: Как сделать обработку клавиатуры в TreeWidget ?
Отправлено: Skala от Май 12, 2007, 09:07
Здравствуйте!
Как можно сделать обработку клавиатуры в TreeWidget ? Конкретно - мне нужно сделать удаление из веток. Допустим, нажали Delete. Как задать свою обработку нажатия?


Название: Как сделать обработку клавиатуры в TreeWidget ?
Отправлено: pakulo от Май 12, 2007, 11:45
Сделать свой класс от QTreeWidget и переопределить событие keyPressEvent?


Название: Как сделать обработку клавиатуры в TreeWidget ?
Отправлено: Skala от Май 12, 2007, 12:21
Хотелось бы без переопределений, ибо в designer еще не все прорисовано/спроектировано.
Хотя, на последнем этапе можно...


Название: Как сделать обработку клавиатуры в TreeWidget ?
Отправлено: pakulo от Май 12, 2007, 13:30
Мне самому интересно, можно ли обрабатывать события клавитуры и мышки не переопределяя класс, например как-то получить какая кнопка нажата и передать владельцу данные на обработку.


Название: Как сделать обработку клавиатуры в TreeWidget ?
Отправлено: vregess от Май 12, 2007, 14:47
Цитата: "pakulo"
Мне самому интересно, можно ли обрабатывать события клавитуры и мышки не переопределяя класс, например как-то получить какая кнопка нажата и передать владельцу данные на обработку.


Можно сделать installEventFilter

Цитировать

void QObject::installEventFilter ( QObject * filterObj )
bool QObject::eventFilter ( QObject * watched, QEvent * event )  [virtual]


Пусть есть главное окно Mw и QTreeWidget - tree;
Тогда:
Код:

tree->installEventFilter(Mw);
...
Mw::eventFilter ( QObject * watched, QEvent * event )
{
....
}

Вроде так должно получиться, что вы требуете


Название: Как сделать обработку клавиатуры в TreeWidget ?
Отправлено: pakulo от Май 12, 2007, 17:30
о, спасибо, а я кокраз эту тему упустил...


Название: Как сделать обработку клавиатуры в TreeWidget ?
Отправлено: Tonal от Май 13, 2007, 11:18
Цитата: "Skala"
Хотелось бы без переопределений, ибо в designer еще не все прорисовано/спроектировано.
Хотя, на последнем этапе можно...

В дизайнере есть очень удобная функция: "Promote to Custom Widget" доступна для любого виджета из контекстного меню.
Она как раз для подобных случаев.


Название: Как сделать обработку клавиатуры в TreeWidget ?
Отправлено: pakulo от Май 13, 2007, 19:29
а как можно установить фильтры для всех дочерных обьектов? Циклом перебрать все виджеты?