我在不使用布局的情况下将小部件添加到父小部件(因为我正在使用一些与布局尝试执行的操作相冲突的动画)。
我试图了解我需要做些什么来手动将子小部件与其父小部件对齐(即使调整父小部件的大小也将其水平和垂直居中)。
我试过自己计算位置并使用QWidget.move()
and QWidget.setGeometry()
,但都不能正常工作,因为我似乎无法获得正确的父宽度和高度。
这是我要实现的目标的简化示例:
import sys
from PySide.QtGui import *
from PySide.QtCore import *
class Test( QWidget ):
def __init__( self, parent=None ):
super( Test, self ).__init__( parent )
def sizeHint( self ):
return QSize( 500, 500 )
def addPage( self, widget ):
widget.setParent( self )
# THIS SEEMS UNPREDICTABLE:
widget.move( self.sizeHint().width()/2, self.sizeHint().height()/2 )
if __name__ == '__main__':
app = QApplication( sys.argv )
mainW = Test()
childW = QPushButton( 'centre me please' )
mainW.addPage( childW )
mainW.show()
sys.exit( app.exec_() )