C++ Qt 窗口定位

4
Qt是否有提供类似工具提示窗口的定位功能呢?(或者任何类型的窗口/小部件)。
我希望能够自动更新窗口的位置,以便它始终保持在屏幕上(或者至少尽可能适合屏幕)。
我想要的行为示例可以在通知区域的标准Windows工具提示中看到。如果工具提示很大,并且它的某些部分超出了屏幕范围,它会自动重新定位。
显然,我可以自己编写代码,但我正在寻找已经编写好的东西。
1个回答

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());
    }
}

这很好,我不知道 ::availableGeometry 方法。 - Yippie-Ki-Yay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接