Russian Qt Forum

Qt => Общие вопросы => Тема начата: wenny от Май 31, 2016, 12:29



Название: Позиционирование в правый нижний угол (выше трея)
Отправлено: wenny от Май 31, 2016, 12:29
Доброго времени суток. Есть маленькая тулза, висящая в трее, и имеющая небольшую формочку, которую хотелось бы выводить поверх трея в правом нижнем углу. Кряхтя и причитая наскреб вот такую конструкцию:
Код
C
QDesktopWidget* desktop = QApplication::desktop();
QRect r = desktop->availableGeometry();
r.setLeft(r.center().x());
this->move(r.bottomRight());

Оная отправляет форму за пределы экрана. Насколько я понимаю, нужно сдвигаться с учетом высоты трея и длины самого приложения. Подскажите, пожалуйста, как по-людски все это реализуется? Может уже есть готовое апи на этот счет, дабы не сотрясать этот мир новой порцией инноваций в области велосипедостроения? Покорнейше благодарю.


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: Racheengel от Май 31, 2016, 12:33
а так?

this->move(r.bottomRight() - this->size());



Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: wenny от Май 31, 2016, 12:40
А так вопит на гороскопную несовместимость QPoint и QSize :)


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: Racheengel от Май 31, 2016, 12:46
ну переведите тогда QSize в QPoint  :)


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: wenny от Май 31, 2016, 12:50
Гугол молчит.


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: gil9red от Май 31, 2016, 13:03
Код
C++ (Qt)
this->move(r.bottomRight() - this->rect());


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: wenny от Май 31, 2016, 13:30
Я буду премного благодарен, если кто-нибудь объяснит, как же конвертить QRect и QSize в QPoint.


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: Igors от Май 31, 2016, 13:37
Код
C++ (Qt)
this->move(r.bottomRight() - this->rect());
"Недолет", лучше так
Код
C++ (Qt)
this->move(r.bottomRight() - this->rect().bottomRight() - QPoint(2, 2));
 


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: wenny от Май 31, 2016, 13:49
"Недолет", лучше так
Код
C++ (Qt)
this->move(r.bottomRight() - this->rect().bottomRight() - QPoint(2, 2));
 
Спасибо, завелось. А как быть с треем?


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: Racheengel от Май 31, 2016, 14:12
Хм... а ведь реально, в Qt не хватает фреймворка конвертирования QSize в QPoint и наоборот :(
А задача очень актуальная, хотя ее сложность может изначально отпугивать...
Может, есть смысл запилить модуль QSizePointConversionFramework...?



Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: Igors от Май 31, 2016, 14:20
Спасибо, завелось. А как быть с треем?
А чего Вы от него хотите? Вообще кто это? Линейка внизу? (Dock в OSX, TaskBar в Вындоуз). Так там рисовать нельзя (не положено)


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: wenny от Май 31, 2016, 14:22
А чего Вы от него хотите? Вообще кто это? Линейка внизу? (Dock в OSX, TaskBar в Вындоуз). Так там рисовать нельзя (не положено)
На счет рисований не знаю, а вот задница GUI-шки туда прекрасно помещается :) Хотелось бы ее позиционировать стабильно выше этой "линейки". Длину же ее можно выяснить?


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: AlexEx от Май 31, 2016, 14:49
Не забыть, что трей может быть не только внизу, но и слева, справа, сверху  :).


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: wenny от Май 31, 2016, 21:21
Черт с ним, пусть по центру буйт :) Всем спс.


Название: Re: Позиционирование в правый нижний угол (выше трея)
Отправлено: Bepec от Июнь 01, 2016, 08:58
С треем всё плохо. Стандартный функционал даёт лишь размеры рабстола, а расположение трея необходимо узнавать платформозависимыми функциями :D