pyqt - расположить дочерний виджет из дизайнера qt рядом с родителем

Я использую Qt Designer для создания дочернего виджета (макета) - tree_view_widget_ui.py

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, но я хотел бы избежать этого, если это возможно.


person lskrinjar    schedule 27.06.2014    source источник


Ответы (1)


in class MainWindow:

Вы захотите использовать self.TreeViewWidget.setGeometry(x, y, width, height) или вы можете использовать функцию перемещения (x, y).

См. документы для setGeometry и переместить функции

person Shadow9043    schedule 28.06.2014
comment
Я пробовал move в tree_view_widget.py, и это не сработало. Как вы предложили, я использовал move в class MainWindow, поскольку геометрия виджета определена в tree_view_widget_ui.py. Оно работает! - person lskrinjar; 29.06.2014