2
from PySide.QtGui import *
import sys

app = QApplication(sys.argv)
layout = QHBoxLayout()
print issubclass(type(layout), QWidget)
# Layout is not a kind of QWidget

window = QWidget()
window.resize(500, 500)
window.show()
window.setLayout(layout)

butt = QPushButton("asdf", parent = None)
butt.resize(100, 100)
butt.show()
layout.addWidget(butt)

print butt.parent() 

app.exec_()

butt実際には isの親オブジェクトですwindow。しかし、私はその親をwindow明示的に設定していません。レイアウト オブジェクトには、追加されたウィジェットの親を適用先のコンテナーに設定する副作用があると言えますか?

4

1 に答える 1

1

はい。

ドキュメントの関連部分:

レイアウトを使用する場合、子ウィジェットを作成するときに親を渡す必要はありません。レイアウトは、レイアウトがインストールされているウィジェットの子になるように、(QWidget::setParent() を使用して) ウィジェットの親を自動的に変更します。

注: レイアウト内のウィジェットは、レイアウト自体ではなく、レイアウトがインストールされているウィジェットの子です。ウィジェットは、レイアウトではなく、他のウィジェットのみを親として持つことができます。

于 2012-09-25T12:42:36.800 に答える