即使在我的.pro文件中包含“testlib”包(用于qWait())之后,如何避免Qt应用程序中的控制台窗口?

Posted

技术标签:

【中文标题】即使在我的.pro文件中包含“testlib”包(用于qWait())之后,如何避免Qt应用程序中的控制台窗口?【英文标题】:How to avoid console window in Qt application, even after Including "testlib" package (for qWait()) in my .pro file? 【发布时间】:2010-08-10 04:40:46 【问题描述】:

大家好,

我已经浏览了有关此主题的各种主题,但似乎没有任何东西可以解决我的特定问题。包括 testlib,使控制台窗口出现,我没有找到任何选项来抑制这种行为。

但是我的应用程序仍然需要 testlib 存在(因为我非常想使用 QTest::qWait() 方法),并且没有控制台窗口出现。我尝试了其他线程的一些选项,但没有任何效果。即使使用了“testlib”,我应该怎么做才能抑制这个控制台窗口?

我尝试的选项是

    将 CONFIG -= 控制台添加到我的 .pro 文件中。

        QT += gui \    
            xml \
            core \
            testlib    
        CONFIG += qt \
            windows \
            uitools \
            release        
        CONFIG -= console        
        LIBS += extern/ftd2xx.lib        
        RC_FILE = res/AC-Core.rc        
        QMAKE_CXXFLAGS += -Wall \
    

    编辑 qmake.conf 文件,行

    QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console, to    
    QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,windows
    

欢迎任何其他抑制控制台窗口出现的想法?

谢谢!

【问题讨论】:

相关:***.com/q/760323/13767 【参考方案1】:

您不必使用QTest 来获得QTest::qWait() 的功能。如果您查看qWait() 的源代码,您可以了解它的工作原理并自己实现此功能:

inline static void qWait(int ms)

    Q_ASSERT(QCoreApplication::instance());

    QTime timer;
    timer.start();
    do 
        QCoreApplication::processEvents(QEventLoop::AllEvents, ms);
        QTest::qSleep(10);
     while (timer.elapsed() < ms);

【讨论】:

或者,更好的是,在事件循环的 quit() 槽上使用本地 QEventLoop 和 QTimer::singleShot。

以上是关于即使在我的.pro文件中包含“testlib”包(用于qWait())之后,如何避免Qt应用程序中的控制台窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何从节点包中包含 css/js 文件?

Qt:如何告诉 Qmake 在 Visual Studio 项目中包含 ws2_32

如何在 Qt 5.4 应用程序中包含 QtScript 模块

在我的 iOS 应用中包含 Google+ SDK 时出现捆绑验证错误

OpenCV 2.4:Windows 中 Qt 中包含的问题

如何在我的项目分发中包含包子文件夹?