2012-01-06 18 views
1

私のpyQt4アプリケーションにはメインダイアログがあり、そのコンテンツタブではサブコンポーネントが制御されます。PyQt4の親ウィンドウに対して子ウィンドウのサイズを自動的に変更する方法は?

ユーザーが最大化ボタンをクリックするかメインウィンドウのサイズを変更すると、タブコントロールのサイズとそのコンポーネントの位置が自動更新されます。

Javaスイングアプリケーションでの水平方向のサイズ変更可能な垂直方向のサイズ変更可能なプロパティが似ています。

+0

ここに解決策があります! http://stackoverflow.com/questions/3492739/auto-expanding-layout-with-qt-designer – anils

答えて

2

Qtデザイナーでダイアログを作成した場合は、すべてのレイアウトを正しく設定していることを確認してください。

最初に、タブウィジェットの各タブを右クリックし、メニューからLayout/Layout in a Gridを選択します。ツールバーにも同じことをするボタンがあります(このアイコンは小さな青い四角形のグリッドです)。

各タブでレイアウトを設定したら、メインフォームでも同じことをします。

オブジェクトインスペクタでアイテムを選択して右クリックする方が、フォームよりも簡単な場合があります。オブジェクトインスペクタには、レイアウトに与えられたフォームの各項目の横にアイコンが表示されます。

すべてのレイアウトを設定したら、Form/Preview...を使用して、すべてが期待通りに機能することを確認します。

+0

ありがとうエコモロ、それは動作します! – anils

1

QHBoxLayoutまたはQVBoxLayoutなどのレイアウトを使用します。

from PySide.QtCore import * 
from PySide.QtGui import * 

app = QApplication([]) 

win = QMainWindow() 

frame = QFrame() 
win.setCentralWidget(frame) 

layout = QHBoxLayout() 
frame.setLayout(layout) 

layout.addWidget(QPushButton("Expanding Button")) 
layout.addWidget(QPushButton("Another Expanding Button")) 

win.show() 

app.exec_() 

これはQHBoxLayoutQMainWindowに2 QPushButton秒を追加します。これは、彼らがお互いに横たわっていることを意味し、それぞれが窓の半分を埋めるでしょう。 QPushButtonは、サイズポリシーを設定していない限り、水平方向にのみ表示されますが、QTabWidgetはすべての空き領域を埋めるでしょう。

関連する問題