我正在实现一个视图和一个模型,我希望在内部(通过拖动)支持两个移动项目,并复制项目(通过在拖动时按Ctrl键).我按照说明做了我需要做的一切.我已经设置了mime函数,我已经实现了removeRows()和flags().问题是当我拖动时,它默认为复制操作(我得到带有加号的箭头光标,它确实通过在模型中创建一个新项目来复制项目).
我能看到的唯一区别是:如果我只在supportedDropActions()中返回Qt :: MoveAction,它只会移动.如果我返回(Qt :: CopyAction | Qt :: MoveAction),它只会复制.
有任何想法吗?我希望它像Nautilus(Gnome)或Windows文件资源管理器中的文件一样工作:拖动移动图标,按住Ctrl键并拖动它们.
QAbstractItemModel有一个setHeaderData(int section,.....)方法,它根据标题方向取一个行或列.我有一个包含几个表的模型,这些表都是顶级项目的子项.也就是说,我的模型层次结构的第一级(在不可见的根下)由8行组成,每行有一个子元素,它是一个表(当然总共8个表).似乎setHeaderData将为第一级提供带有标题的视图,但是如何为这些子表指定标题数据?QTableView有一个setRootIndex()方法,因此它可以深入到模型层次结构并显示这些子表中的数据,我希望setHeaderData也可以采用根索引,但事实并非如此.我可以在QTableView上手动设置标题,但这样更麻烦 - 是否有更好的解决方案?
我正在编写嵌入式设备屏幕的模拟(其中包含主QWidget上的自定义小部件),虽然屏幕的原始大小为800x600,但我希望能够通过拖动窗口来上下调整它.角.如果没有使用网格布局和担架(不会向上/向下缩放字体),我该如何完成这种缩放?我认为解决方案的一部分可能是创建一个QTransform并以某种方式将其注入整个应用程序的QWidget,或其QPaintDevice或QPaintEngine.我想这样做,而不是在每个自定义小部件中放置QTransform,只需要"主窗口"QWidget.