繁体   English   中英

pyqt-从Qt Designer定位父控件附近的子控件

[英]pyqt - position child widget from qt designer near parent

我使用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这样做,但我想尽可能避免这种情况。

class MainWindow

您将要使用self.TreeViewWidget.setGeometry(x, y, width, height)或使用move(x,y)函数。

请参阅文档以获取setGeometrymove函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM