Название: [РЕШЕНО]Обработчики drag & drop для виджетов, сделанных в дизайнере Отправлено: sergek от Апрель 09, 2013, 13:45 Коллеги, помогите, пожалуста, по вопросам, связанным с drag&drop.
Перетаскиваю файлы из проводника на один из виджетов главной формы программы. Форма сконструирована в дизайнере. Приемником файлов сделал главную форму (т.к. не знаю, как ответить на 1-й вопрос ниже): Код: MainWindow::MainWindow(QWidget *parent) : Код: void MainWindow::dragEnterEvent(QDragEnterEvent * event){ Код: void MainWindow::dragMoveEvent(QDragMoveEvent * event){ Вопросы следующие: 1) Можно ли перегрузить обработчики dragEnterEvent, dragMoveEvent, dropEvent для виджетов, сделанных в дизайнере, т.е. не создавая производного класса виджета? 2) В обработчике dragMoveEvent координаты курсора >answerRect(), как я понял, даются в системе координат принимающего виджета, а для главной формы отсчет по оси "y" начинается от верхнего края (т.е. от нижнего края заголовка формы). Координаты дочерних виджетов geometry() даются в системе координат centralWidget(), отличающиеся по оси "y" на высоту панели инструментов. Как лучше привести их к общей системе? Название: Re: Обработчики drag & drop для виджетов в дизайнере Отправлено: kambala от Апрель 09, 2013, 18:19 как можно что-то перегрузить без наследования? в плюсах нету method swizzling, если только не заниматься извращениями на ассебмлере наверное.
координаты приводи через mapToGlobal. Название: Re: Обработчики drag & drop для виджетов в дизайнере Отправлено: sergek от Апрель 09, 2013, 18:36 как можно что-то перегрузить без наследования? в плюсах нету method swizzling, если только не заниматься извращениями на ассебмлере наверное. неточно выразился - подменить обработчики.Цитировать координаты приводи через mapToGlobal. этот вариант я имел в виду, хотелось более изящное решение.Название: Re: Обработчики drag & drop для виджетов, сделанных в дизайнере Отправлено: Bepec от Апрель 09, 2013, 18:55 1) Надо посмотреть, возможно ли словить евенты драг анд дропа фильтрами. Но это всё равно будет топорнее, чем наследование.
2) mapTo - изящный вариант, предоставленный разработчиками Qt. Лучше ты не сделаешь :D Название: Re: Обработчики drag & drop для виджетов, сделанных в дизайнере Отправлено: kambala от Апрель 09, 2013, 19:04 как можно что-то перегрузить без наследования? в плюсах нету method swizzling, если только не заниматься извращениями на ассебмлере наверное. неточно выразился - подменить обработчики.Название: Re: Обработчики drag & drop для виджетов, сделанных в дизайнере Отправлено: sergek от Апрель 10, 2013, 16:36 2) mapTo - изящный вариант, предоставленный разработчиками Qt. Лучше ты не сделаешь :D Не очень-то это красиво, ну пусть :):Код: void MainWindow::dragMoveEvent(QDragEnterEvent *event){ |