Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Xambey от Март 10, 2016, 19:11



Название: Виджет с креплением
Отправлено: Xambey от Март 10, 2016, 19:11
Здравствуйте Форумчане! Подскажите, можно ли (и если можно как, реализовать) сделать QWidget, с креплением для QPushButton . P.s я хочу сделать сетку из таких QWidget с возможностью перемещения кнопок между ними. Заранее Спасибо!


Название: Re: Виджет с креплением
Отправлено: kambala от Март 10, 2016, 19:18
что такое «крепление»?


Название: Re: Виджет с креплением
Отправлено: Bepec от Март 10, 2016, 19:59
Видимо он имеет что то типо координатной сетки с прилипанием к ней при перемещении QPushButton мышкой.

Да, можно сделать QWidget с креплением для QPushButton. Теперь осталось понять чего вы хотите :D


Название: Re: Виджет с креплением
Отправлено: ViTech от Март 10, 2016, 20:32
Сделать это можно. Сложность зависит от того, насколько красиво это должно выглядеть в плане внешнего вида и анимации. Для простого случая должно хватить одного QWidget с QGridLayout, в ячейках которого будут располагаться QPushButton. Для перетаскивания, скорей всего, придётся воспользоваться Drag and Drop (http://doc.qt.io/qt-5/dnd.html). Там внизу есть примеры про перетаскивание, возможно они помогут.


Название: Re: Виджет с креплением
Отправлено: Xambey от Март 10, 2016, 23:09
Сделать это можно. Сложность зависит от того, насколько красиво это должно выглядеть в плане внешнего вида и анимации. Для простого случая должно хватить одного QWidget с QGridLayout, в ячейках которого будут располагаться QPushButton. Для перетаскивания, скорей всего, придётся воспользоваться Drag and Drop (http://doc.qt.io/qt-5/dnd.html). Там внизу есть примеры про перетаскивание, возможно они помогут.

Вы имеете ввиду, что каждый qwidget, будет иметь в себе слой, в который и будет крепиться переместившиеся кнопка? Если да, то вопрос, как 'отлавливать' тот момент, что кнопка попала в зону 'крепления', спасибо


Название: Re: Виджет с креплением
Отправлено: Xambey от Март 10, 2016, 23:11
Видимо он имеет что то типо координатной сетки с прилипанием к ней при перемещении QPushButton мышкой.

Да, можно сделать QWidget с креплением для QPushButton. Теперь осталось понять чего вы хотите :D
Сетка шахмат,  состоящая из виджетов клеток(qwidget), и к каждому может прикрепляться кнопка


Название: Re: Виджет с креплением
Отправлено: Bepec от Март 10, 2016, 23:31
При движении мыши с зажатой кнопкой генерируется событие MouseMove.
так же у каждого виджета имеются события входа мыши и выхода из своего пространства. Вам остаётся только написать проверки на наличие кнопки и заставить кнопку перетягиваться.

Но опять всё зависит от конечной цели. Мб лучше будет один виджет, который будет разбит на клетки :D


Название: Re: Виджет с креплением
Отправлено: Smogg от Март 11, 2016, 03:32
Драгэндроп, определенно. Реализация может сперва и покажется переусложненной, но там есть все, что вам надо: событие начала таскания баттона, событие позиционирования баттона, гарантированное оповещение о успехе или неуспехе перетаска.


Название: Re: Виджет с креплением
Отправлено: Igors от Март 11, 2016, 12:25
Сетка шахмат,  состоящая из виджетов клеток(qwidget), и к каждому может прикрепляться кнопка
Не видно зачем каждую клетку делать виджетом

Вы имеете ввиду, что каждый qwidget, будет иметь в себе слой, в который и будет крепиться переместившиеся кнопка? Если да, то вопрос, как 'отлавливать' тот момент, что кнопка попала в зону 'крепления', спасибо
Какой "слой"? Зачем вообще выдумывать неестественный термин "крепление"? Нужно чтобы фигура перетаскивалась и встала в нужную клетку? Это делается простейшими средствами - перекрытием mousePressed/Released/Moved и даже без всякого drag'n'drop


Название: Re: Виджет с креплением
Отправлено: Bepec от Март 11, 2016, 12:32
Тут важна конечная цель. А без неё можно что угодно фантазировать :D


Название: Re: Виджет с креплением
Отправлено: ViTech от Март 11, 2016, 13:05
Вы имеете ввиду, что каждый qwidget, будет иметь в себе слой, в который и будет крепиться переместившиеся кнопка? Если да, то вопрос, как 'отлавливать' тот момент, что кнопка попала в зону 'крепления', спасибо

Можно в одном qwidget располагать несколько кнопок, которые будут иметь позиции и размеры в соответствии с ячейками QGridLayout. Вообще по-разному можно делать, зависит от потребностей. Изучайте примеры и выбирайте подходящий вариант.


Название: Re: Виджет с креплением
Отправлено: Racheengel от Март 11, 2016, 14:06
в итоге что надо то? редактор типа Qt Designer?


Название: Re: Виджет с креплением
Отправлено: Xambey от Март 11, 2016, 18:12
Спасибо всем! Вместе вы составили полную картину того, что мне надо:)