在我们使用Qt 4并支持触摸输入的应用程序中,我们使用带有QFileDialog::DontUseNativeDialog
和QFileDialog::ExistingFiles
选项的QFileDialog
。第一个是必需的,因为我们设置了自己的样式表,而这在本机对话框中不起作用。第二个是用于选择多个文件,这是我们想要做的。
问题是,一个不能选择多个文件与触摸输入在QFileDialog
,因为我们没有Shift或CTRL可用。在Windows中,这个问题是通过在项目中添加复选框来解决的,但QFileDialog
没有复选框。
我试图操纵QFileDialog
使其显示项目的复选框,但失败了。
我尝试交换底层QTreeView
和QListView
使用的QFileSystemModel
,但这会破坏模型和对话框之间的信号槽连接。我无法找到一种方法来恢复他们,因为他们是深埋在私人肠子的对话。
目前我能想到的唯一解决办法就是写一个全新的对话框,但我想避免这种努力。
- 那么,有没有一种方法可以将复选框添加到
QFileDialog
模型视图中呢? - 你有其他的想法如何选择多个文件可以成为可能?
- 问题在Qt 5中解决了吗?无论如何,我们都要更新。
1条答案
按热度按时间nwlls2ji1#
由于我未能将复选框添加到项目视图中,我实现了一个“黑客”解决方案。它在对话框中添加了一个额外的可检查按钮,充当“ctrl”键。选中该按钮后,可以选择多个文件。这个解决方案有点难看,因为它依赖于了解对话框的内部结构,但它确实完成了这项工作。
这里是header的代码。
随着实施…
TouchFileDialog
将事件过滤器安装到项目视图中,当选中对话框中的相应按钮时,该事件过滤器将向视图的鼠标事件添加ControlModifier。请随意发布其他解决方案,因为这有点即兴。