3

画面の右側にメインウィンドウを表示したい。

私はこのコードを使用します:

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

そして、私はこのエラーを受け取ります:

エラー:オブジェクトなしでメンバー関数 'const QRect QDesktopWidget::availableGeometry(int) const' を呼び出すことはできません

代わりに 1024 を使用するQDesktopWidget::availableGeometry()と動作します...しかし、静的に初期化したくありません...

さまざまな画面サイズに合わせてウィンドウを動的に再配置するにはどうすればよいですか?

4

2 に答える 2

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());
于 2013-08-16T07:30:59.160 に答える
0

問題のウィンドウが 800×800 であると仮定すると、次のようになります。

QRect rec = QApplication::desktop()->availableGeometry();
move(QPoint((rec.width()-800)/2, (rec.height()-800)/2));
于 2016-09-19T21:22:38.407 に答える