Здравствуйте, гость ( Вход | Регистрация )
abc | Дата 18.2.2011, 22:16 |
событие можно так создать: QCoreApplication::sendEvent в остальное я не вник) |
|
Алексей1153 | Дата 8.2.2011, 19:18 |
Была идея, что надо отлавливать mousePressEvent() только там имхо и надо. Но не пресс, а релиз только лучше |
|
Vorchun | Дата 8.2.2011, 15:56 |
Задача: Создать на базе модель представления таблицу из виджетов, таким образом чтоб она по функциональности не отличалась от виджетов помещенных в gridlayout Частичное решение Существует контейнер в котором хранится List из CalendarI Существует модель ( прослойка между представлением и контейнером) умеющая через data() возвращать CalendarI Существует виджет CalendarIW который умеет отображать CalendarI ( setItem() ) - у меня это виджет с кнопочками Я сделал следующий делегат (немного криво, но в целом вполне функционально ):
коротко - этот делегат отрисовывает как нужно ячейку, когда она не редактируется, а когда она редактируется - он создает виджет, который обеспечивает необходимый функционал. bool CalendarD::eventFilter( QObject *qoEditor , QEvent *qeEvent ) - обеспечивает выход из виджета, когда мышь покидает область редактирования Открывать ячейку на редактирование планировалось из представления следующим образом
При таком подходе - юзер водит мышью по вьюву тыкает на кнопочки в виджетах - и вообще не догадывается что перед ним не Gridlayout. Это работает при медленном движении мыши. Все было бы хорошо если бы не одно НО - при быстром движении мыши возникает следующая ситуация: 1) мышь пролетает по первой ячейке - создается первая ячейка 2) мышь продолжает лететь - пока первая ячейка еще не создалась или еще хз почему - но мышь уже покинула эту ячейку - соответственно виджет редактора из делегата не получил событие QEvent::Leave приведшее к его уничтожению, те первая ячейка продолжает редактироваться 3) поскольку первая ячейка еще редактируется - все остальные ячейки не открываются на редактирование... Вот! Была идея, что надо отлавливать mousePressEvent() - открывать ячейку на редактирование, а потом повторно создавать событие нажатие мыши, чтоб его отловил уже открытый виджет - но как это сделать я не в курсе... Есть ли у кого какие либо идеи еще? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 24.4.2024, 15:47 |