即使在我的.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应用程序中的控制台窗口?的主要内容,如果未能解决你的问题,请参考以下文章
Qt:如何告诉 Qmake 在 Visual Studio 项目中包含 ws2_32
如何在 Qt 5.4 应用程序中包含 QtScript 模块
在我的 iOS 应用中包含 Google+ SDK 时出现捆绑验证错误