【问题标题】:QApplication The program has unexpectedly finishedQApplication 程序意外结束
【发布时间】:2013-01-02 21:44:54
【问题描述】:

我使用 OpenCV 和 QT 库创建了我的项目。 在我的项目中,我向我的网络摄像头展示了一个标记(使用 aruco);当 cam 识别它时,会创建一个浏览器(使用 Qt 库)并显示一个站点。 (你可以在这张图片中看到它)

但是,当我关闭浏览器并再次将标记显示为 cam(我没有关闭我的项目)时,我的程序意外停止

我使用 QtCreator 2.6.0 e qt 4.8.3 库在 Win7 x64 上工作。 我认为问题是QApplication。好像没有完全关闭。

这是浏览器创建(QApplication的创建)的代码:

   int browser(int argc, char **argv)
{
    Q_INIT_RESOURCE(data);
    BrowserApplication application(argc, argv);
    if (!application.isTheOnlyBrowser())
        return 0;
    application.newMainWindow();
   return application.exec();

}

任何人有任何想法或知道如何解决它???

谢谢!

【问题讨论】:

  • 我怀疑application.newMainWindow();。也许它会创建第二个实例。
  • 为你的美丽+1。

标签: qt


【解决方案1】:

据我了解,您的一个应用程序至少有两个窗口(一个用于相机,一个用于浏览器),我怀疑 BrowserApplication 是 QApplication 的子类。这个对吗?如果我是正确的,请阅读 QApplication 类描述的前几行:

对于任何使用 Qt 的 GUI 应用程序,只有一个 QApplication 对象,无论应用程序是否有 0、1、2 个或更多窗口 在任何给定时间。

您没有提供 BrowserApplication 的实现,但我怀疑您正在创建两个实例。

【讨论】:

  • 卢卡你没看错!我有一个带有两个窗口的应用程序(一个是用 opencv 为相机创建的,另一个是用 qt 为浏览器创建的)。问题是当第一个浏览器关闭并且我想创建第二个浏览器时。当我关闭浏览器时,不应该删除实例?那么如何真正删除浏览器的第一个实例呢?
  • 这里可以找到BrowserApplication的实现:doc-snapshot.qt-project.org/5.0/qtwebkitexamples/…
  • 重新排列您的应用程序以避免出现两个 QApplication 实例。您不需要继承 QApplication 来创建包含网页的窗口。查看您报告的代码,看看如何。
  • 我不明白你的意思。我可以避免使用 BrowserApplication 创建包含网页的窗口吗?
  • QApplication 与 QtWebKit 没有直接关系。请阅读文档:doc.qt.digia.com/qt/qtwebkit.html.
猜你喜欢
  • 2013-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
相关资源
最近更新 更多