【问题标题】:Using QT widgets in DLL在 DLL 中使用 QT 小部件
【发布时间】:2014-03-30 02:33:35
【问题描述】:

我想在我的共享库中的一种方法中调用 QMessageBox,但是当我尝试这样做时,我得到“QWidget:必须在 QWidget 之前构造一个 QApplication”。但是我无法在我的共享库中构造 QApplication,请问如何解决这个问题?

【问题讨论】:

  • 通常,您需要实例化一个 QApplication 实例,然后调用 exec() 来运行 GUI UI 线程(主事件循环)。这听起来像是与 stackoverflow.com/questions/2150488/… 类似的东西的副本。这个问题的答案有点旧(2010 年),所以你必须对 Qt 5.xx.xx 及更高版本进行更多研究
  • 为什么不能在库中构造 QApplication?
  • @DmitrySazonov:库不应该(通常)具有 QApplication 上下文,因为它们通常包含在 QApplication 上下文中。
  • @NicholasSmith 这取决于应用程序。

标签: qt dll qwidget


【解决方案1】:

我会说避免在共享库中创建 QMessageBox(或任何 GUI 小部件),因为它会稀释目的,如果您将库与非 GUI 应用程序一起使用会怎样?

我经常使用共享库的解决方案是使用信号/槽系统,然后允许 QApplication 管理它希望如何在屏幕上显示结果,因此发出信号并将其连接到应用程序中的槽显示 QMessageBox。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2014-06-15
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多