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