我有一個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)。 –
你將需要一個事件循環的線程,當應用程序停止時需要停止 –