在屏幕右侧显示Mainwindow(Qt 5.1.0)

时间:2013-08-16 07:21:09

标签: c++ qt screen

我想在屏幕右侧显示我的主窗口。

我使用此代码:

QRect r  = this->frameGeometry();   
r.moveRight(QDesktopWidget::availableGeometry());   
this->move(r.topRight());

我收到此错误:

  

错误:无法调用成员函数'const QRect QDesktopWidget :: availableGeometry(int)const'无对象

如果我使用1024而不是QDesktopWidget::availableGeometry()它可以工作......但我不想静态地初始化它......

如何针对不同的屏幕尺寸动态重新定位窗口?

2 个答案:

答案 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));