C ++ Qt позиционирование окна - PullRequest
4 голосов
/ 22 февраля 2011

Есть ли у Qt что-то, что можно предложить для позиционирования окон, похожих на подсказки?(или любые типы окон / виджетов на самом деле).

Я хочу иметь возможность автоматически обновлять положение окна, чтобы оно всегда оставалось на экране (или хотя бы подходило к размеру).это как можно больше).

Пример поведения, которое я хочу, можно увидеть в стандартных подсказках Windows в области уведомлений.Если всплывающая подсказка большая и ее часть исчезает с экрана , она автоматически перемещается.

Очевидно, я могу написать код сам, но я что-то ищуэто уже было написано.

1 Ответ

2 голосов
/ 22 февраля 2011

Я не знаю, есть ли в Qt одна-единственная функция, которая обеспечивает виджет полностью внутри экрана.Но с QDesktopWidget это, вероятно, тривиально.

void function RestrainWidgetToScreen(QWidget * w)
{
    QRect screenRect = QDesktopWidget::availableGeometry(w);
    if(w->frameGeometry().left() < screenRect.left()) {
        w->move(screenRect.left() - w->frameGeometry().left(), 0);
    } else if(w->frameGeometry().right() > screenRect.right()) {
        w->move(screenRect.right() - w->frameGeometry().right(), 0);
    }
    if(w->frameGeometry().top() < screenRect.top()) {
        w->move(0, screenRect.top() - w->frameGeometry().top());
    } else if(w->frameGeometry().bottom() < screenRect.bottom()) {
        w->move(0, screenRect.bottom() - w->frameGeometry().bottom());
    }
}
...