我有一个C++库,我打算为它添加一个可选功能(由宏启用)来显示一些额外的调试信息。这个想法是创建并打开一个用Qt制作的窗口来显示一些数据。我的问题是,我没有访问主函数(它是一个库),所以我不能创建Qt需要的对象QApplication
。我曾尝试创建全局对象是这样的:在主函数(库)外实例化QApplication
static int argc = 1;
static char argv[1][6] = {"myapp"};
static QApplication app(argc, (char**)argv);
它的工作原理,但在出口崩溃(上~QApplication()
)。
另一种选择是在堆上分配对象并使用新的API方法初始化/结束库。但我根本不想改变API。
另一种情况是第一次需要打开一个窗口并将其泄漏时在堆上分配。但似乎不是一个好主意。
任何想法?
我使用的Qt 5.1与GCC 4.8针对Windows和Linux。
'QApplication :: instance()'可以让你访问在main(如果有的话)中定义的那个作为QCoreApplication –
问题是我不想强制库的用户添加一些东西他们的主要(甚至包括Qt)。 –
你将需要一个事件循环的线程,当应用程序停止时需要停止 –