【问题标题】:Can Qt show OSX Finder Choose File Dialog (QFileDialog::getOpenFileName) from an OSX dylib?Qt 可以显示 OSX Finder 从 OSX dylib 中选择文件对话框(QFileDialog::getOpenFileName)吗?
【发布时间】: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++。好主意。

标签: c++ macos qt cocoa


【解决方案1】:

Simon Warta 和 Nicholas Smith 的答案是否定的——它需要 Qt 中的小部件上下文来从 Qt 驱动该对话框。由于在这种情况下没有,我将不得不从 Objective C 驱动某些需要这种上下文的任务。然而,Nicholas Smith 也表示,在这种情况下,从 Objective C 驱动 GUI,并从 Qt/C++ 驱动其余部分以完成繁重的任务,例如数据库等,这是一种更好的编程策略。

由于我正在构建一个主要将 Webkit 用于 GUI 的项目,并且可能只需要 GUI 之外的一些小东西,例如打开 Finder 文件对话框,它实际上不会是那么多的 Objective C。剩下的我可以从 Qt/C++ 驱动,因为我更喜欢那个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    相关资源
    最近更新 更多