Sco*_*ott 5 c++ ubuntu qt drag-and-drop gnome
我正在实现一个视图和一个模型,我希望在内部(通过拖动)支持两个移动项目,并复制项目(通过在拖动时按Ctrl键).我按照说明做了我需要做的一切.我已经设置了mime函数,我已经实现了removeRows()和flags().问题是当我拖动时,它默认为复制操作(我得到带有加号的箭头光标,它确实通过在模型中创建一个新项目来复制项目).
我能看到的唯一区别是:如果我只在supportedDropActions()中返回Qt :: MoveAction,它只会移动.如果我返回(Qt :: CopyAction | Qt :: MoveAction),它只会复制.
有任何想法吗?我希望它像Nautilus(Gnome)或Windows文件资源管理器中的文件一样工作:拖动移动图标,按住Ctrl键并拖动它们.
如果你尝试这种方式,首先编写一个 keyPressEvent 并设置是否按下 ctrl 键'
keyPressEvent(QKeyEvent *e)
{
if(e->key() == Qt::Key_Control)
bControlKeyPressed = true;
}
keyReleaseEvent (QKeyEvent *e)
{
if(e->key() == Qt::Key_Control)
bControlKeyPressed = false;
}
Run Code Online (Sandbox Code Playgroud)
并在鼠标 pressEvent 中检查 ctrl 键是否被按下
`mousePressEvent()
{
if (bControlKeyPressed)
//enable Qt::CopyAction
else
//enable Qt::MoveAction
}`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1898 次 |
| 最近记录: |