2012-09-24 40 views
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的父對象其實是window。 但我沒有明確將其父項設置爲window。 我可以說佈局對象有一些副作用,可能 將添加的窗口小部件的父項設置爲它應用於的容器?Qt:佈局的潛在副作用?

+0

將問題作爲註釋添加到代碼片段中至少是不常見的。 –

回答

1

是的。

Relevant part from the docs

當您使用的佈局,你並不需要通過構建子控件父時 。佈局將自動重新使用 窗口小部件(使用QWidget :: setParent()),以便它們是 子窗體的子級,在該窗口小部件上安裝佈局。

注意:佈局中的小部件是安裝了佈局 佈局的小部件的子項,而不是佈局本身。小部件只能有 其他小部件作爲父項,而不是佈局。