Я хочу показать мое главное окно в правой части экрана.
Я использую этот код:
QRect r = this->frameGeometry();
r.moveRight(QDesktopWidget::availableGeometry());
this->move(r.topRight());
И я получаю эту ошибку:
ошибка: невозможно вызвать функцию-член const QRect QDesktopWidget :: availableGeometry (int) const без объекта
Если я использую 1024 вместо QDesktopWidget::availableGeometry()
это работает … Но я не хочу инициализировать это статически …
Как я могу динамически переместить окно для экрана разных размеров?
QDesktopWidget :: availableGeometry не является статической функцией Ты можешь использовать QApplication :: настольные () функция, чтобы получить 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());
Предполагая, что рассматриваемое окно 800 × 800:
QRect rec = QApplication::desktop()->availableGeometry();
move(QPoint((rec.width()-800)/2, (rec.height()-800)/2));