2014-06-27 54 views
1

我用Qt Designer創建一個子控件(佈局) - tree_view_widget_ui.pyPyQt的 - 從Qt設計位置子部件附近父

class Ui_Form(object): 
    def setupUi(self, Form, parent = None): 
     Form.setObjectName(_fromUtf8("Form")) 
     Form.setEnabled(True) 
     Form.resize(200, 300) 
     Form.setMinimumSize(QtCore.QSize(200, 300)) 
     self.gridLayout = QtGui.QGridLayout(Form) 
     self.gridLayout.setObjectName(_fromUtf8("gridLayout")) 
     self.treeWidget = QtGui.QTreeWidget(Form) 
     self.treeWidget.setEnabled(True) 
     self.treeWidget.setMinimumSize(QtCore.QSize(200, 300)) 
     font = QtGui.QFont() 
     self.treeWidget.setFont(font) 
     self.treeWidget.setDragDropMode(QtGui.QAbstractItemView.DragDrop) 
     self.treeWidget.setObjectName(_fromUtf8("treeWidget")) 
     self.treeWidget.headerItem().setText(0, _fromUtf8("1")) 
     self.gridLayout.addWidget(self.treeWidget, 0, 0, 1, 1) 

     self.retranslateUi(Form) 
     QtCore.QMetaObject.connectSlotsByName(Form) 

    def retranslateUi(self, Form): 
     Form.setWindowTitle(_translate("Form", "Tree View", None)) 
     self.treeWidget.setSortingEnabled(True) 

,我初始化tree_view_widget.py

from tree_view_widget_ui import Ui_Form 

class TreeViewWidget(QWidget): 
    def __init__(self, parent=None, flags=0): 
     super(TreeViewWidget, self).__init__(parent) 
     self.ui = Ui_Form() 
     self.ui.setupUi(self, parent = parent) 

而且孩子的用戶界面子控件從父main.py初始化並用信號打開:

# tree widget 
from tree_view_widget.tree_view_widget import TreeViewWidget 

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.flags = QtCore.Qt.Window 
     # tree view widget 
     self.TreeViewWidget = TreeViewWidget(parent=self) 
     self.TreeViewWidget.setWindowFlags(self.flags) 
     self.TreeViewWidget.show() 

我的問題是:我怎樣才能定位父窗口小部件附近的頂部左/右角將重合,而不是修改文件tree_view_widget_ui.py,因爲此代碼是從Qt Designer自動生成的。我設法將子窗口小部件定位到目標位置,但僅在修改文件tree_view_widget_ui.py時纔有效,但如果可能,我想避免這種情況。

回答

1

class MainWindow

你將要使用self.TreeViewWidget.setGeometry(x, y, width, height)或者你可以使用移動(X,Y)的功能。

見文檔爲setGeometrymove功能

+0

我tried'move'在'tree_view_widget.py',它不能正常工作。正如你所建議的,我在'class MainWindow'中使用了'move',因爲widget的幾何體是在'tree_view_widget_ui.py'中定義的。有用! – avstenit