首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uic.loadUi加载的小部件的子类

uic.loadUi加载的小部件的子类
EN

Stack Overflow用户
提问于 2017-10-01 17:50:46
回答 1查看 292关注 0票数 0

我使用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

如何创建从哪里允许拖放的规则?

EN

回答 1

Stack Overflow用户

发布于 2017-10-02 22:17:56

最简单的方法是预先进行子类化。

创建my_tree_view.py如下所示

代码语言:javascript
复制
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>行后面的末尾添加以下内容。

代码语言:javascript
复制
 <customwidgets>
  <customwidget>
   <class>MyTreeView</class>
   <extends>QTreeView</extends>
   <header>my_tree_view</header>
  </customwidget>
 </customwidgets>

,然后将以下行(在.ui文件中更高的位置)从

代码语言:javascript
复制
<widget class="QTreeView" name="treeView">

代码语言:javascript
复制
<widget class="MyTreeView" name="treeView">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46515179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档