Хочу сделать, чтобы при приближении одного окна к другому, оно "примагничивалось" к нему и в дальнейшем, чтобы перемещение основного окна влекло за собой перемещение примагниченного, а при попытке перемещения побочного окна, оно "отмагничивалось".
Пока что моя идея сводится к тому, что нужно найти сигнал перемещения каждого из окон, и в обработке сигнала основного окна менять координаты побочного, а в обработке сигнала побочного при попытке "оторвать" его, удерживать его на месте, пока его не отведут достаточно далеко.
Сложность в том, что я не нашел сигналов перемещения окна (только сигнал перемещения виджета внутри родительского объекта, что не подходит) и "удержание" побочного окна, при попытке его убрать, кажется, будет выглядеть дерганным.
Пример того, как я это вижу:
void GraphicWindow::holdWindow()
{
int x1,x2,y1,y2;
mw_ptr->geometry().getCoords(&x1,&y1,&x2,&y2);
if(abs(this->geometry().x() - x1 -x2)+abs(this->geometry().y() - y1) > 10)
{
sticky_flag = false;
}
else
{
if(!sticky_flag)
{
sticky_flag = true;
}
this->setGeometry(x2+1,y1,this->geometry().width(),this->geometry().height());
}
}
void GraphicWindow::moveWindow()
{
if(sticky_flag)
{
int x1,x2,y1,y2;
mw_ptr->geometry().getCoords(&x1,&y1,&x2,&y2);
this->setGeometry(x2+1,y1,this->geometry().width(),this->geometry().height());
}
}
Это 2 слота, первый подключается к сигналу движения окна, которое приклеивается, второй подключается к сигналу движения окна, к которому приклеиваемся, окна независимы друг от друга, но у в приклеиваемом окне есть указатель на приклеиваемое окно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Говорят, что динамическая память в программе выделяется в куче, а локальные переменные - в стекеЕсли с реализаций стека всё вроде бы понятно,...
Использую студию 2017 и 2 варианта ремоут машин (WSL и VirtualBox(Debian95))
Судя по этому ответу, записи char** и char*[] в параметрах функции означают один и тот же типЗачем так сделано и в каких ситуациях они будут означать...