问题标签 [qapplication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
11412 浏览

python - 为什么我需要“sys.argv”来在 PyQt 中启动 QApplication?

我试图了解 PyQt 的作用。我没有做的第一件事是:

为什么我必须给 QApplication 这个论点?我知道做什么sys.argv。但在我的脚本中,我不需要它。

0 投票
1 回答
133 浏览

c++ - 在创建 QApplication 之前可以使用 Qt 元类型系统吗?

每当我需要在 Qt 元对象系统中注册一个类型时,我都会使用以下代码:

*.h 文件

*.cpp 文件

这样,在 main() 函数启动之前,我就以所有可能的方式注册了 MyType。所以,问题是

1) 整个 Qt MetaObject 系统是否需要一个 QCoreApplication 的实例?也许我的代码很巧合?

2)有什么好的解决方案不涉及我丑陋的拐杖(即文员类)吗?

0 投票
1 回答
163 浏览

python - PyQt4:centralWidget 中的不同视图。最佳实践软件架构

在我的程序中,我想定义不同的视图来显示我的数据。在我的第一次尝试中,所有视图都在类(QtGui.QWidget)中定义。然而,由于视图的代码开始变得更长,而且我还想添加交互功能,我想将不同的视图分离到单独的类中。

下面是我的第一次尝试。在这里,我只是尝试setCentralWidget在两个视图之间切换。在切换到每个视图之前,我必须生成视图的新实例。否则我会产生一个运行时错误。似乎每个 View 实例一旦不在中心视图中就会被销毁。

我理解对吗?建议的代码结构是否可以,或者如果我这样构造我的代码会出现问题吗?针对此类问题的任何其他建议/最佳实践?

如果没有标记线,我会在单击查看 2 而不是返回查看 1 后收到以下运行时错误

0 投票
1 回答
926 浏览

c++ - 如何使用线程实例化多个 QApplication

我在这里找到了防止app.exec()阻塞主线程的解决方案。

我试图实现这一点,但出现以下错误:

这是我的代码:

PB 是一个具有初始化 GUI 的静态函数的类。

pb.cpp:

主.cpp:

问题是,我在类中初始化 QApplication 所以它应该可以工作......我确保它可以与主要不使用 QApplication 的单独测试一起工作:

这段代码工作正常。所以只有当我添加线程时我才会收到这个错误。

0 投票
1 回答
224 浏览

c++ - 如何在 QT/C++ 应用程序中添加操作项

我在 Qt/C++ 中创建了一个应用程序,默认情况下,我的 main 中有:

MainUi 是一个类,用于声明应该在 QApplication 中显示的内容。

这部分工作正常

我的目标不是创建一个新菜单,而只是在默认可用菜单中创建一个新操作。默认情况下,QApplication 创建一个菜单“puls_connect”,它是我的项目的名称,带有“退出”操作。我只想在“关于”中添加

在此处输入图像描述

任何的想法 ?

谢谢

0 投票
4 回答
7715 浏览

c++ - Qt qDebug 不适用于 QConsoleApplication 或 QApplication

我目前在使用 Qt 和 Qt Creator 开发程序时遇到了一个非常烦人的问题。每当我尝试使用qDebug()with aQCoreApplicationQApplication在 using 之前实例化qDebug()时,无论我是在 Qt Creator 中还是从普通 shell 中运行程序(我正在使用 Fedora Linux 顺便说一句),都没有任何输出。例如,即使是下面的简单代码也会失败:

有人知道如何解决这个问题吗?提前致谢, 马吕斯

0 投票
1 回答
487 浏览

c++ - QApplication 是惰性的(或使应用程序中的其他线程变得惰性)

这是我在这里的第一篇文章,我希望找到解决我问题的方法。我已经开始使用 Qt 为 Mac 开发一个应用程序。我现在面临一个巨大而令人沮丧的问题。

我的问题是 QApplication 事件循环在 20-50 秒后变得懒惰(或使应用程序中的其他线程变得懒惰)。我试图复制同样的问题并想出了下面的代码。

所以这就是我要做的。我创建了一个 c++ 新线程,新线程每 2 秒打印一次当前时间。问题是在 10-30 次迭代之后,一些迭代需要 6-12 秒,这不应该发生,因为我每次迭代只睡 2 秒。我运行下面的代码,输出是这样的:

当我运行这个程序时,每次都会发生同样的问题。我不确定如果其他人尝试这样做是否会发生同样的问题。但它发生在我的机器上。

下面没有 QApplication 的代码可以正常工作。所以请不要责怪c ++线程或usleep或内核进行线程管理等。另一个奇怪的事情是,当我使用 QCoreApplication 而不是 QApplication 时,它也可以正常工作。此外,我在基于 ubuntu 的机器上使用了相同的代码,并且它在 QApplication 中运行良好。我想这只发生在 Mac 中(虽然我没有尝试过 Windows)。

请不要建议使用 QThread、QTimer 或 QTimer::singleShot。我一开始使用它们并且遇到了同样的问题。我在 QTimer 和 QThread 中使用信号,问题是信号没有及时发出或信号及时发出但插槽没有及时调用。延迟相似(6 - 12 秒)。实际上,这就是我使用 c++ 线程的原因,因为我认为使用 c++ 线程可以解决问题,但事实并非如此。

任何帮助表示赞赏。

操作系统:MAC OSX 10.9.5。

uname -a 输出:

代码:main.cpp:

测试.pro:

编辑:

感谢 timday,我解决了我的问题。我在 timday 提供的链接中遇到了问题。正是应用程序小睡让我的应用程序进入睡眠状态,这就是我遇到定时器和睡眠问题的原因。它只发生在 QApplication 而不是 QCoreApplication 的原因是,当我使用 QApplication 时,mac 认为我有 ui。因此,当我的应用程序未处于活动状态时,mac 可以让我的应用程序进入睡眠状态。

解决方法是以编程方式禁用应用程序小睡。我在 C/C++ 中找不到 api,但在此链接中的目标 c 中有 api 。所以我只是从c ++中调用了objective c。

有c头文件appnap.h:

然后有appnap.m:

将这些行添加到您的 .pro 文件中:

然后,当您不希望应用程序小睡使您的应用程序在操作开始之前调用 disableAppNap 并在操作结束后调用 enableAppNap 时。

这解决了我的问题。

0 投票
2 回答
1397 浏览

c++ - Qt - DLL 中的对话框

在我的公司,我们正在使用 Embarcadero-C++-IDE 进行开发(这很不舒服)。为了开始离开,我们将 dll 中的单个对话框移植到 Qt。例如,我的 qt-dll-code 看起来像这样

尝试从另一个线程启动对话框,例如从 dll 启动 Qt GUI(在 DLLStart 函数中)确实使我的对话框无响应,但我认为这个问题和我的问题没有太大关系。

我正在从主应用程序动态加载这个 Dll,它工作正常。但是,当我第二次弹出对话框时,我得到“在模块 MSVCR110D.dll 中的地址访问冲突”,第三次,我得到“QCoreApplication 中的断言失败,应该只有一个应用程序对象” . 所以我总是需要关闭整个应用程序才能使对话框再次出现,这大大减慢了工作速度。如果我在底部添加该行

对话框再次出现,但程序在关闭第二个对话框时崩溃。加载dll的代码如下

那么为什么我一次要构建多个 QApplication 呢?我可以在上面的代码中替换该行

对话框出现两次,一切正常。但是对 ::FreeLibrary(lib) 的调用如何使事情失败。

谁能帮我?任何帮助、解决方法等都表示赞赏。

0 投票
1 回答
91 浏览

c++ - 我的精神分裂症控制台/gui Qt5 程序应该使用 QApplication 还是 QCoreApplication?

我的程序将根据某些命令行参数打开或不打开 GUI。现在我正在QApplication为我的主事件循环实例化,但注意到我的程序在从无头机器运行时中止(缺少 xorg/xcb),除非我指定一些环境变量来欺骗它相信有一个 xorg 正在运行。

相反,当我实例化时QCoreApplication,我无权访问 activeWindow()。在程序无头运行的情况下(即命令行参数的目的),需要 activeWindow() 的代码将永远不会运行。

所以我要问的是,是否有可能使 QApplication 即使在无头机器上也能毫无问题地运行,并且根本不显示任何 GUI?

我还有哪些其他选择?

0 投票
0 回答
49 浏览

c++ - 与在应用程序中创建 QMathGL 类有关的错误

我在使用 MathGL 库和在应用程序中创建 MathGL 实例时遇到问题。每次我尝试运行它时,都会出现一个错误,指出必须在 QWidget 之前构造 QApplication(QMathGL 类继承自它)。您可以在下面找到我的 main 代码以及与 MainWindow 类相关的所有函数:

主窗口.cpp

主文件