Показать Mainwindow в правой части экрана (Qt 5.1.0)

Я хочу показать мое главное окно в правой части экрана.

Я использую этот код:

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

И я получаю эту ошибку:

ошибка: невозможно вызвать функцию-член const QRect QDesktopWidget :: availableGeometry (int) const без объекта

Если я использую 1024 вместо QDesktopWidget::availableGeometry() это работает … Но я не хочу инициализировать это статически …

Как я могу динамически переместить окно для экрана разных размеров?

3

Решение

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

Другие решения

Предполагая, что рассматриваемое окно 800 × 800:

QRect rec = QApplication::desktop()->availableGeometry();
move(QPoint((rec.width()-800)/2, (rec.height()-800)/2));
0

По вопросам рекламы [email protected]