我想在屏幕右侧显示我的主窗口。
我使用此代码:
QRect r = this->frameGeometry();
r.moveRight(QDesktopWidget::availableGeometry());
this->move(r.topRight());
我收到此错误:
错误:无法调用成员函数'const QRect QDesktopWidget :: availableGeometry(int)const'无对象
如果我使用1024而不是QDesktopWidget::availableGeometry()
它可以工作......但我不想静态地初始化它......
如何针对不同的屏幕尺寸动态重新定位窗口?
答案 0 :(得分:3)
QDesktopWidget::availableGeometry不是静态函数。您可以使用QApplication::desktop()函数获取QDesktopWidget
对象:
QRect r = this->frameGeometry();
r.moveRight(QApplication::desktop()->availableGeometry());
您必须在moveRight()函数中添加其他内容。你不能把QRect放在那里。也许你想要做的是:
QRect r = QApplication::desktop()->availableGeometry();
r.setLeft(r.center().x());
this->resize(r.width(), r.height());
this->move(r.topLeft());
或者,如果您不想调整窗口大小:
QRect r = QApplication::desktop()->availableGeometry();
QRect main_rect = this->geometry();
main_rect.moveTopRight(r.topRight());
this->move(main_rect.topLeft());
答案 1 :(得分:0)
假设有问题的窗口是800×800:
QRect rec = QApplication::desktop()->availableGeometry();
move(QPoint((rec.width()-800)/2, (rec.height()-800)/2));