C ++ Qt窗口定位

时间:2011-02-22 10:57:38

标签: c++ qt window tooltip

Qt是否可以为类似工具提示的窗口定位提供一些东西? (或实际上任何类型的窗口/小部件)。

我希望能够自动更新窗口的位置,以便始终保持在屏幕上(或至少尽可能地适合它)。

我想要的行为示例可以在通知区域的标准Windows工具提示中看到。如果工具提示很大并且它的某些部分离开了屏幕,它会自动重新定位。

显然,我可以自己编写代码,但我正在寻找已经编写过的代码。

1 个答案:

答案 0 :(得分:2)

我不知道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());
    }
}