• 5858阅读
  • 4回复

Q3IconViewItem无法接受drop,怎么回事儿呀? [复制链接]

上一主题 下一主题
离线goodluck1982
 
只看楼主 倒序阅读 楼主  发表于: 2007-05-09
— 本帖被 XChinux 执行加亮操作(2008-07-19) —
我想实现的操作是:当拖动一些图标到另一个图标上并Drop时,将拖动的图标移到被drop的图标代表的文件夹里面。

在Qt3(3.3.5)下,很简单,只需以QIconView为基类创建一个子类并重载虚函数
void contentsDropEvent ( QDropEvent * e)就可以了,在这个函数里写自己的代码就可以实现以上操作。

然而当我把代码移植到Qt4(4.2.3)下以后,发现无法识别drop了。
前提是源代码除了几处小的为了移植到qt4所做的修改(比如QIconView到Q3IconView等)外,其它都不变。结果是 contentsEnevt 这个事件处理函数捕捉不到将图标A放到B上的操作了,只能捕捉到将图标放到IconView的空白处的操作。当把图标A向图标B上拖动的时候,光标的形状也变成一个圆圈里加一斜杠的样子,明显是不可操作,而在Qt3里是没有问题的,光标也不会这个样子。

Q3IconViewItem 也已经 setDropEanbled(true)了,因为在QT3下正常

不知你们是否遇到过这个问题
谁知道怎么解决呀?
离线goodluck1982
只看该作者 1楼 发表于: 2007-05-10
没人遇到过吗?

告诉我怎么解决也好啊。
离线htyoung

只看该作者 2楼 发表于: 2007-05-11
我也碰到过,从qt3 到qt4 就不能用contentsDropEvent,为了以后不麻烦,就用qt4 全重写了。如果你还是想用qt3 的类

看看help里的
类 QMimeData

Porting to Qt 4 (Drag and Drop)
***
QT5
***
离线goodluck1982
只看该作者 3楼 发表于: 2007-05-11
引用第2楼htyoung于2007-05-11 11:03发表的  :
我也碰到过,从qt3 到qt4 就不能用contentsDropEvent,为了以后不麻烦,就用qt4 全重写了。如果你还是想用qt3 的类
看看help里的
类 QMimeData

.......


我是曾想过重写
但是由于对QT了解的还不是很多
没那么多时间再去摸索了
最初用QT3写的,就是 QIconView + QIconViewItem 的一个简单窗口。
后来又加上了 QTreeWidget 。

QTreeWidget 只有QT4中有,QT3中不知怎么实现,应该没有QT4中的方便,不想去折腾,于是就用4了。但又出了 contentsDropEvent 的问题。

那么QT4中是否有什么可以替代 Q3IconView + Q3IconViewItem 的吗?
离线htyoung

只看该作者 4楼 发表于: 2007-05-16
qt3里的QIconView 可以用 QListWidget 或是他的基类 QListView 代替,使用时调用QListView::setViewMode(QListView::IconMode)  就可以得到一个icon的list,详细请看help,但是 还是要依情况来解决的
***
QT5
***
快速回复
限100 字节
 
上一个 下一个