有没有办法在classes方法而不是main()中执行QTest :: qExec()? 我需要将我的testproject编译为dll而不是独立的.exe。 dll由现有GUI使用,测试应由按钮执行。
然而,当调用qexec时,QTGUI会冻结并且不再响应。 以下是qt槽的实现,它处理Buttons请求以执行测试,稍后应该读取结果并显示在某个QEdit小部件中(它已经与虚拟结果一起工作)。
int GUI_Form::onTestRequested()
{
const char* n_argv[] = { "-o", "dummy.txt"};
QCoreApplication CoreApp(argc, const_cast<char**>(n_argv));
QApplication app(argc, const_cast<char**>(n_argv));
return QTest::qExec(&mTestform, argc, const_cast<char**>(n_argv));
}
编译好。没有实现QCoreApplication和QApplication没有任何功能差异,我添加它们是因为它们在通常的main()中是必需的。
答案 0 :(得分:0)
您始终可以使用将您的调用导出到QTest :: exec
的dll函数进行换行现在,显然如果从(其他)GUI应用程序的主线程调用它,它将冻结您的GUI。您想要从后台线程调用它(如果您的测试和类在测试中线程安全)