【发布时间】:2016-03-11 02:05:19
【问题描述】:
我正在 OSX 上制作 Qt/C++ dylib。当没有小部件上下文时,如何让它调用 QFileDialog::getOpenFileName()?
(背景:看,我在这里做的是构建一个极简的 Objective C Cocoa 应用程序,它将加载我的 Qt/C++ dylib 来完成大部分工作。这允许我使用 OSX 本机 webkit(未提供的东西由 5.5 中的 Qt/C++ 编写)。我更喜欢使用 Qt/C++ 而不是 Objective C。所以,这就是我感兴趣的原因。)
【问题讨论】:
-
在Cocoa中没有直接的等效对话框吗?我认为没有 Qt Widgets 或 Qt Qml 上下文就无法以干净的方式进行操作,因为您需要父窗口,例如在处理模态时。如果它对您有帮助,您可以在使用 Qt Quick (kullo.net/blog/advanced-filedialog-in-qml) 时不使用 Qt Widgets 模块来完成
-
您最好接近它,以便您的应用程序前端由 Obj-C/Cocoa 框架驱动,包括文件加载,然后使用您的 Qt dylib 来驱动您的应用程序逻辑。
-
为了扩展,
QFileDialog具有调用本机对话框的静态函数,而不是基于 Qt 小部件的函数。我不能确定它是否可以在 dylib 中工作,但实际上我会避免从链接库运行 UI,因为它在调试和管理线程时会造成困难。 -
所有伟大的建议家伙。我会从Objective C驱动它。谢谢。答案是否定的——需要从 Objective C 驱动它,无论如何最好从 Objective C 驱动 GUI 元素,并且只将 Qt/C++ 用于我的应用程序的繁重部分,比如数据库等,因为我非常喜欢 Qt/C++。好主意。