Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 拖动';n';使用USB触摸屏在Qt 5.5中删除错误?_C++_Linux_Qt_Arm - Fatal编程技术网

C++ 拖动';n';使用USB触摸屏在Qt 5.5中删除错误?

C++ 拖动';n';使用USB触摸屏在Qt 5.5中删除错误?,c++,linux,qt,arm,C++,Linux,Qt,Arm,我试图在一个linux Qt应用程序中,将QTableView中的drag'n'drop与一个自定义QAbstractTableModel一起使用,但存在一个问题。我追踪到了一个使用QTableWidget的简约示例,因为存在同样的问题,而且更容易复制。 当我开始拖动QTableWidget的一个单元格时,通常应该将拖动单元格的内容粘贴到鼠标光标上。在我的Windows机器上,这就像一个符咒(见图1,很抱歉质量太差,但我必须使用我的相机,否则我无法保持拖拽) 如果我在连接了触摸屏的嵌入式系统(A

我试图在一个linux Qt应用程序中,将QTableView中的drag'n'drop与一个自定义QAbstractTableModel一起使用,但存在一个问题。我追踪到了一个使用QTableWidget的简约示例,因为存在同样的问题,而且更容易复制。
当我开始拖动QTableWidget的一个单元格时,通常应该将拖动单元格的内容粘贴到鼠标光标上。在我的Windows机器上,这就像一个符咒(见图1,很抱歉质量太差,但我必须使用我的相机,否则我无法保持拖拽)

如果我在连接了触摸屏的嵌入式系统(ARM)上运行完全相同的代码,则拖动单元格**的内容不会*粘贴到光标上,而是在屏幕的左上角(只有一个“一半”可见,另一半不在视口中,见图2)

窗口:

触摸式嵌入式系统(无可见鼠标光标):

在我的嵌入式系统上取消-a
Linux fsimx6 3.0.35-F+S#3 SMP抢占Sun 10月4日15:41:19 CEST 2015 armv7l GNU/Linux

Qt版本:5.5.0

如何复制:
将QTableWidget放入应用程序,确保showDropIndicator、dragEnabled和dragDropOverwriteMode设置为true,dragDropMode设置为DragDrop,defaultDropAction设置为MoveAction


我刚刚发现(在写这篇文章时),当我连接USB鼠标而不是使用USB触摸屏时,它也可以在我的嵌入式系统上工作。不同之处在于,使用USB鼠标时,应用程序中会显示鼠标光标。连接触摸屏后(eGalax Inc.eGalaxTouch EXC3000-0408-35.00.00),光标不会自动绘制(由Qt决定)。

当我使用触摸屏连接从dragMoveEvent()方法输出event.pos()时,我看到了正确的x/y位置,因此光标符号和蓝色内容框之间可能存在某种连接?

我只是在这里猜测,但看起来拖动的实现与鼠标/光标有关。因为touch没有光标,所以拖动时被拖动的元素没有要跟随的光标,因此它被固定到0x0。问题可能在于对小部件或平台插件的基本触摸支持,尽管我怀疑是前者。使用windows下的触摸屏进行测试,以确认

如果在0x0处有一个隐藏光标,您可以尝试手动将其绑定到触摸位置,并希望这样做可以奏效。比如说

如果这不起作用,您可以实现自己的拖放机制,它可以与触摸一起工作。对于小部件来说,这可能会变得非常乏味,我已经在QML中完成了自定义拖放,这相当简单


此外,您还可以尝试查看在QML中拖动是否正常工作,QML更新且更以触摸为中心。旧的QtWidgets模块基本上已经完成,并没有真正考虑触摸。QML使用起来非常简单和快速,因此我建议您使用它,除非您需要旧部件的额外功能,而这些功能在QtQuick控件的QML部件模拟中尚未完全实现。

您可以将USB触摸屏插入您的Windows框中吗?如果可以,您是否可以获得与ARM相同的行为?谢谢!你的回答给了我正确的暗示。在dragMoveEvent中,我记录了光标的位置:
qDebug(),您很容易就知道:)Qt设计的限制通常很难克服。是的,我知道,它实际上是一个更大的项目,所以很难将其移植到QML。我必须支持ListView和TableView之间的dragndrop,其中TableItems具有不同的跨度。。这是一段很难让它发挥作用的时期。下一个项目将通过QML实现;)