【问题标题】:QFileDialog in a non-QT app非 QT 应用程序中的 QFileDialog
【发布时间】:2014-02-05 03:46:15
【问题描述】:

我有一个使用 3rd 方 GUI 框架的应用程序,但我想使用 QFileDialog 打开文件。我正在考虑实例化一个不可见的 QWidget 子类,用于提供对话框。

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: qt qwidget qfiledialog


    【解决方案1】:

    我认为不需要不可见的小部件,因为文件对话框不需要父小部件即可显示。

    由于对话框需要运行 Qt 事件循环,您需要使用exec() 或使用getOpenFileName 等静态函数之一以模态方式显示对话框。

    要使用任何小部件类,包括文件对话框,您需要有一个QApplication 的实例,尽管该实例不必调用其exec() 方法。

    【讨论】:

    • 你确定 QFileDialog::getOpenFileName 不需要 QApplication 实例吗?我不断收到段错误。
    • @ejang 我希望最后一段足够明确:你确实需要一个QApplication 实例。
    • 谢谢,在 callign QFileDialog 工作之前实例化一个 QApplication。显然 QFileDialog 正在后台做一些事情,即使没有调用 exec 循环也可以做到这一点。
    • @ejang 它在后台什么也没做。它运行一个事件循环,它非常位于前台,并阻止您调用它的线程中的所有其他处理。正如我所说,对话框需要运行事件循环。这可以通过调用其任何静态函数或在对话框本身上使用exec() 来完成。换句话说:如果你调用一个静态函数,你就是在旋转一个事件循环。
    猜你喜欢
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多