作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在做什么/到目前为止我有什么:
我正在使用 Qt-designer 创建 PyQt .ui 文件,我正在使用 QUiLoader 将其加载到我的 python 脚本中,这使我可以访问小部件/组件:
self.ui.tree_widget_of_items ( which is a QTreeWidget created in Qt-designer)
我能够读取和写入小部件的值,并且能够像这样在 TreeWidget 上使用信号:
self.ui.tree_widget_of_items.itemSelectionChanged.connect(self.myFunction)
我想做什么?
我试过但没用的:
self.ui.tree_widget_of_items.dropEvent = self.drop_action
def drop_action(self,e):
print "drop action"
我已经尝试将我自己的函数分配给 TreeWidget 的 dropEvent,但是当我在 TreeWidget 上放置一个项目时它不会被触发。
我也试过:
self.ui.tree_widget_of_items.dragEnterEvent = self.drop_action
我确保在 TreeWidget 上启用了拖放。
最佳答案
在动态 UI 中实现事件(这意味着 UI 在 Qt-designer 中创建并在使用 .ui 文件的 python 工具中使用)。你需要以下东西:
你的工具的MainWindow类应该继承QtGui.QMainWindow
class main_window(QtGui.QMainWindow):
它应该调用 super().init()
class main_window(QtGui.QMainWindow):
def __init__(self, parent=None):
super(main_window, self).__init__(parent)
loader = QUiLoader()
file = QtCore.QFile(os.path.join(SCRIPT_DIRECTORY, 'mainwindow.ui'))
file.open(QtCore.QFile.ReadOnly)
if parent:
self.ui = loader.load(file, parentWidget=parent)
else:
self.ui = loader.load(file)
file.close()
在组件上安装 EventFilter:
self.ui.tree_widget_of_items.installEventFilter(self)
# not --> self.ui.tree_widget_of_items.installEventFilter(self.ui)
定义 eventFilter() :
def eventFilter(self, o, e):
if (o.objectName() == "tree_widget_of_items"):
if e.type() == QtCore.QEvent.Type.Enter:
self.drop_action(e)
关于python - 如何在 PyQt 的动态 UI 中覆盖小部件的事件(dropEvent)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38838354/
我是一名优秀的程序员,十分优秀!