我使用python3.6和pyqt5并通过self.ui = uic.loadUi("MainWindow.ui",self)加载我的窗口,主要有两个QtreeViews和一个QList小部件。我和dropEvent有问题。我必须将它分离到每个Widget/模型,这样我就有了不同的“下拉操作”。但是每次我退出时,我都会接到来自dropEvent函数的self.ui Object调用,我尝试将self.ui.treeView.viewport().installEventFilter(self)更改为分离函数,但没有成功。在文档中,以及在这里和网上找到的一些例子中,都有带有拖放函数的小部件子类。但是我没有找到由uic加载程序生成的小部件的解决方案。我尝试在模型中安装拖放函数。但一点运气都没有。
如何子类由uic.loadUi加载的Widget
或
如何创建从哪里允许拖放的规则?
发布于 2017-10-02 22:17:56
最简单的方法是预先进行子类化。
创建my_tree_view.py如下所示
from PyQt5 import QtWidgets, QtGui
class MyTreeView(QtWidgets.QTreeView):
def __init__(self, parent=None):
super().__init__(parent)
def dropEvent(self, event: QtGui.QDropEvent):
print('MyTreeView dropEvent')
super().dropEvent(event)然后编辑您的.ui文件,并在</widget>行后面的末尾添加以下内容。
<customwidgets>
<customwidget>
<class>MyTreeView</class>
<extends>QTreeView</extends>
<header>my_tree_view</header>
</customwidget>
</customwidgets>,然后将以下行(在.ui文件中更高的位置)从
<widget class="QTreeView" name="treeView">至
<widget class="MyTreeView" name="treeView">https://stackoverflow.com/questions/46515179
复制相似问题