找回密码
 立即注册
收起左侧

关于QTableWedget的text动态修改问题.

4
回复
8200
查看
[复制链接]
累计签到:24 天
连续签到:1 天
来源: 2017-3-24 18:22:16 显示全部楼层 |阅读模式
4Qter豆
我这里详细说明一下我遇到的问题,希望同学们能够帮助我解决这个问题,先谢谢了.
在QTableWidget中,有一些可以编辑的Item,然后,我想在我对某个Item进行修改,然后按回车的时候,在修改的内容中自动增加"m/s"后缀.如果可以的话,首先判断输入的字符是否是数字,如果不是数字则不改变;
例如:
我想在Speed Limit下面中,首先双击可以编辑修改,修改了文字之后点击Enter键,此时显示的内容不仅仅是修改后的文字,而是加了后缀的;例如,我编辑数字8,修改为98,之后点击Enter键,画面显示98m/s其中"m/s"是加进去的后缀.


如果要实现这样的效果,可以采用怎样的方式,或者说不可以用QTableWidget实现,那么用什么实现会比较好呢? 谢谢大家先.

最佳答案

查看完整内容

监视键盘按下事件,如果是enter键按下,获取表格当前单元格,根据其位置和内容进行自己想要实现的操作。
回复

使用道具 举报

累计签到:1564 天
连续签到:1 天
2017-3-24 18:22:17 显示全部楼层
监视键盘按下事件,如果是enter键按下,获取表格当前单元格,根据其位置和内容进行自己想要实现的操作。
回复

使用道具 举报

累计签到:9 天
连续签到:1 天
2017-3-25 12:42:50 显示全部楼层
可以实现,你在代码里监听键盘时间,把回车键事件的代码中设置:输入的值加上后缀单位(m/s)就行了;
判断是否为数字可以用QValidatior加正则表达式,网上有很多例子,或查询qt助手。
回复

使用道具 举报

累计签到:24 天
连续签到:1 天
2017-3-25 19:20:37 显示全部楼层
yafeilinux 发表于 2017-3-24 18:22
监视键盘按下事件,如果是enter键按下,获取表格当前单元格,根据其位置和内容进行自己想要实现的操作。 ...

谢谢yafeilinux的帮助,我没有尝试这种方法,原来使用的是QTabelWidget其中的一个itemChanged信号,自己绑定这个信号到自己的Slot上,当修改了单元格中的值之后会调用itemChanged信号,然后我在自定义的SLOT中处理,利用了item.setText()方法将原来获取的值加上"m/s"重新set进单元格.这样一直不能成功,导致程序崩溃.后来发现了原因,是因为setText方法内部会触发itemChanged信号,然后就无限递归了,直至程序崩溃.然后我在自定义的SLOT中判断item->text()获取的值是不是以"m/s"结尾,如果是直接返回,如果不是再添加"m/s",这样就不会出现循环递归了.通过这个方法解决了问题.
我不知道这个方法是不是好方法,但是总觉得itemChanged信号应该就是监听改变的,就尝试解决了,监听键盘Enter键绝对可以,但是我还没有尝试,因为监听键盘之后,利用setText()方法设置到单元格直接就会成功,不会出现任何递归啊之类的.
说了这么多,还是谢谢了,也当分享自己遇到的问题和解决方法了.
回复

使用道具 举报

累计签到:1564 天
连续签到:1 天
2017-3-26 22:27:27 显示全部楼层
adongguo 发表于 2017-3-25 19:20
谢谢yafeilinux的帮助,我没有尝试这种方法,原来使用的是QTabelWidget其中的一个itemChanged信号,自己绑定 ...

问题解决就好,有时候办法很多,适合自己使用的就是好办法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了