首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >跟踪QTableView中行被移动的时间的PyQt信号

跟踪QTableView中行被移动的时间的PyQt信号
EN

Stack Overflow用户
提问于 2020-06-22 15:14:07
回答 1查看 113关注 0票数 1

我正在使用带有QTableViewQAbstractItemModel的子类化版本,并使用子类化的model.dropMimeData()model.insertRows()model.removeRows()激活了拖放。现在,我想要显示拖放操作完成后的更改,并让用户再次撤消该操作。因此,我为tableView实现了自己的dropEvent()-method。我还将move方法设置为InternalMove

我检查方法内部的移动确认,然后调用super(widget.__class__, widget).dropEvent(event)。我期望在此执行之后,行被插入到新位置,并在旧位置被删除。发生的情况是,它在指定位置插入行,但只有在dropEvent()完成后才删除旧位置的行。无论我是在函数内部调用event.accept()还是event.acceptProposedAction(),它都会一直等到dropEvent()完成。

我正在寻找一个信号,它告诉我拖放操作何时被执行。我希望QAbstractItemModelrowsMoved-signal是我想要的,但它不是在dnd操作期间发出的。然而,信号rowsInsertedrowsRemoved是发出的。但rowsRemoved信号是在dropEvent()完成时立即发出的。谁知道QTableView在哪里执行插入目标行、设置数据和删除源行的操作?

我在Windows10上使用python3和PyQt5。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def dropEvent_withConfirm(widget, event):
        dropInd = widget.indexAt(event.pos())
        if not dropInd.isValid():
            event.ignore()
            return

        confirmGUI = ConfirmGUI("Drag Element to new position?",
                                "Are you sure you want to drag the element to this position?",
                                True)
        if confirmGUI.getConfirmation():
            super(widget.__class__, widget).dropEvent(event)
            event.accept()
            # Here I want to do something after the finished move, but here the target row was inserted, but the source row is not yet deleted
        else:
            event.ignore()

    self.client.tblView.dropEvent = lambda e: dropEvent_withConfirm(self.client.tblView, e)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-25 09:56:59

我现在不依赖于super().dropEvent(),而是通过自己实现它来解决它。我找不到一个合适的信号,它是在完成drop时发出的。下面是我的更新代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def dropEvent_withConfirm(widget, event):
    dropInd = widget.indexAt(event.pos())
    if not dropInd.isValid():
        event.ignore()
        return

    confirmGUI = ConfirmGUI("Drag Element to new position?",
                            "Are you sure you want to drag the element to this position?",
                            True)
    if confirmGUI.getConfirmation():
        old_row, new_row = getSrcAndDstRow()
        entry            = getDraggedEntry()
        self.myModel.insertRows(new_row)
        self.myModel.setRow(new_row, entry)
        if old_row > new_row:
            self.myModel.removeRows(old_row + 1)
        else:
            self.myModel.removeRows(old_row)
        event.accept()
        # Here I can now do something after the finished move
    else:
        event.ignore()

self.client.tblView.dropEvent = lambda e: dropEvent_withConfirm(self.client.tblView, e)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62517678

复制
相关文章
javascript 隐式转换_mysql隐式转换
简单数据类型(也称为原始类型):Undefined、Null、Boolean、Number、String 和 Symbol。ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。 复杂数据类型叫 Object(对象)。Object 是一种无序名值对的集合。
全栈程序员站长
2022/11/07
1.6K0
javascript 隐式转换_mysql隐式转换
mysql 隐式类型转换_scala的隐式转换
在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引。下面分析两种隐式转换的情况
全栈程序员站长
2022/11/07
1.9K0
mysql 隐式类型转换_scala的隐式转换
sql的隐式转换_js强制转换和隐式转换
Oracle中对不同类型的处理具有显式类型转换(Explicit)和隐式类型转换(Implicit)两种方式,对于显式类型转换,我们是可控的,但是对于隐式类型转换,当然不建议使用, 因为很难控制,有不少缺点,但是我们很难避免碰到隐式类型转换,如果不了解隐式类型转换的规则,那么往往会改变我们SQL的执行计划,从而可能导致效率降低或其它问题。
全栈程序员站长
2022/11/07
3K0
C# 隐式转换_php隐式转换
预定义的隐式转换总会成功而且不会引发异常,适当合理的用户自定义隐式转换也可以展示出这些 特性。
全栈程序员站长
2022/09/27
1.4K0
mysql 隐式转换_js强制转换和隐式转换
什么鬼,明明查的是204027026112927603,为什么204027026112927605也出来了
全栈程序员站长
2022/11/07
4.9K0
mysql 隐式转换_js强制转换和隐式转换
JS隐式转换_隐式转换是什么
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
1.9K0
php隐式转换,隐式转换如何使用?总结隐式转换实例用法「建议收藏」
JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object。object是引用类型,其它的五种是基本类型或者是原始类型。我们可以用typeof方法打印来某个是属于哪个类型的。不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。typeof ’11’ //string
全栈程序员站长
2022/11/10
1.7K0
php隐式转换,隐式转换如何使用?总结隐式转换实例用法「建议收藏」
spark隐式转换 toDf_隐式转换是什么
解决方案就是自己定义一个隐式转换函数,double2int。这个隐士函数的功能也需要是唯一的
全栈程序员站长
2022/11/10
1.1K0
spark隐式转换 toDf_隐式转换是什么
scala 隐式转换
Scala 中可以让函数库调用变得更加方便的隐式变换和隐式参数,以及如何通过它们来避免一些繁琐和显而易见的细节问题。 内容主要包括 implicits 的使用规则、隐含类型转换、转换被方法调用的对象等
全栈程序员站长
2022/11/10
1.1K0
关于隐式转换
昨天,一个读者向我提交了一个问题,请我就SQL server 隐式转换发表一些看法。当SQL server遇到一个不匹配类型的表达式的时候,它有两种选择。它使用隐式转换并能够执行或者转换错误而导致执行失败。在深入隐式转换之前,让我们假定错误的情形。
Leshami
2022/03/08
7690
scala隐式转换[通俗易懂]
在之前的章节中有使用到隐式转换:scala 使用jackson解析json成对象
全栈程序员站长
2022/11/08
7600
Oracle的隐式转换
都说Oracle存在NUMBER和VARCHAR2类型的隐式转换,严格意义上需要避免,但为何需要避免,从下面的实验进行验证。 1. 创建测试表和索引 create table tn (id number, name varchar2(1));
bisal
2019/01/29
9200
MySQL隐式转换
当运算符与不同类型的操作数一起使用时,将进行类型转换以使操作数兼容。某些转换是隐式发生的。 官方给的定义些许抽象,下面看例子。 有车辆表vehicle。
关忆北.
2023/10/11
1900
MySQL隐式转换
MySQL隐式类型注入与隐式转换
在MySQL中执行SQL查询时,如果SQL语句中字段的数据类型和表中对应字段的数据类型不一致时,MySQL查询优化器会将数据的类型进行隐式转换。
Petrochor
2022/06/07
1.3K0
MySQL隐式类型注入与隐式转换
Scala 【 14 隐式转换与隐式参数 】
​ Scala 的隐式转换,其实最核心的就是定义隐式转换函数,即 implicit conversion function 。
Lokinli
2023/03/09
8250
「  [学习记录] JS 类型转换 - 隐式转换  」
简单来说就是,在比较运算过程中,基本数据类型会隐式转换,复杂数据类型不能隐式转换,但会使用toString()转成字符串,然后再进行隐式转换
青益
2023/01/09
5.2K0
「  [学习记录] JS 类型转换 - 隐式转换  」
oracle隐式转换和显式转换_oracle显示游标和隐式
和其他的关系型数据库一样, oracle 中也能进行一些隐式的数据转换,这对我们写 SQL 语句有 非常 用,我们可以不必麻烦地手动转化很多类型的字符。虽然前面我们介绍了一些使用例如to_char,to_date的函数进行强制转换的方法,但是隐式转换也还是不错的。 Orac
全栈程序员站长
2022/11/10
1K0
Scala基础——隐式转换
Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicitconversion function。定义的隐式转换函数,只要在编写的程序内引入,就会被Scala自动使用。Scala会根据隐式转换函数的签名,在程序中使用到隐式转换函数接收的参数类型定义的对象时,会自动将其传入隐式转换函数,转换为另外一种类型的对象并返回。这就是“隐式转换”。 通常建议将隐式转换函数的名称命名为“one2one”的形式。 隐式转换函数与普通函数唯一的语法区别就是,要以implicit开头,而且最好要定义函数返回类型。
羊羽shine
2019/08/16
7270
JavaScript类型隐式转换
JavaScript 的数据类型之前已经讲过了,忘记的小伙伴出门左转,查看搞懂 JavaScript 的数据类型
闲花手札
2023/10/17
2130
JavaScript简单隐式转换
今天在帮后台写一个页面的时候,发现了一个问题,字符串的true或者false,怎么才能转换成布尔类型的?我毫不犹豫的用了Boolean,结果就是发现页面都显示的是true的效果。随后查了一下有没有方法转换,查到的居然都是去判断。
wade
2020/04/23
5800

相似问题

在后台运行时显示弹出窗口?

31

请求小米设备的运行时权限

14

弹出窗口启用

22

通过弹出窗口启用对辅助设备的访问

10

在后台运行时显示弹出窗口的权限

273
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文