8

ウィジェットの幅を照会して、カスタム レイアウト管理を実行したいと考えています。残念ながら、次のコードは、ウィジェットが実際にどれほど大きくても小さくても 640 を返します。

int myWidth = this->rect().size().width();  // "this" is my class derived from QWidget
// myWidth is set to 640

編集:

int myWidth = this->width()同じ 640 を返します

4

1 に答える 1

9

特別なレイアウト管理を行う正しい場所はオーバーライドされresizeEventます。その時点で、ウィジェットのサイズが決定されます (通常は、サイズ ヒントサイズ ポリシーに基づいて親ウィジェットのレイアウトによって決定されます)。ウィジェットが初めて表示される前にも呼び出されることが保証されています。resizeEvent少なくともレイアウトに子ウィジェットがある場合は、スーパー クラスも呼び出すことを忘れないでください。

于 2013-02-18T20:21:01.360 に答える