参考来源:(36条消息) Qt中搭建WebAssembly_c1s2d3n4cs的博客-CSDN博客_qt webassembly配置
依据上述博客中的方法在Win10系统搭建Qt Webassembly,搭建过程中遇到一些问题,自己慢慢摸索,解决了一些问题,特此记录。
1.搭建完成后,编译工程,弹出错误
找不到libstdc++-6.dll,无法继续执行代码
找不到libgcc_s_seh-1.dll,无法继续执行代码
在D:\Qt\Qt5.15.2\5.15.2\wasm_32\bin中找到libstdc++-6.dll、libgcc_s_seh-1.dll、libwinpthread-1.dll,复制到D:\Qt\Qt5.15.2\5.15.2\wasm\bin中。
2. 问题2:-1: error: Project ERROR: Cannot run target compiler 'em++'. Maybe you forgot to setup the environment。
应该是没有设置环境变量,此电脑->属性->高级系统设置->环境变量->系统环境变量
找到Path,编辑,新建如下路径(我的emsdk路径是D:\emsdk\emsdk-main):
3. 修改环境变量后,不再报错。在ui文件中放置了Hello world, 成功打开了网页。如下
但是并没有显示文本,受下面链接的启发
qt for webassembly环境搭建图文教程 - 飞扬青云 - 博客园 (cnblogs.com)
工程编译完成以后会自动打开电脑默认浏览器比如IE浏览器,因为IE浏览器不支持wasm,所以需要将地址复制拷贝到edge或者谷歌火狐等浏览器运行。按此操作之后,将地址拷贝到了谷歌浏览器,可以显示出控件,但是又出现了新的问题,画面一闪而过,很快就没了,显示Application exit。
运行了一个Qt例程,就可以运行,不会一闪而过。对比我的工程和例程,发现main.cpp中的不同
我的代码:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show();
return a.exec();
}
例程代码:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow window;
ThemeWidget *widget = new ThemeWidget();
window.setCentralWidget(widget);
window.resize(900, 600);
window.show();
return a.exec();
}
发现其做了一个QMainWindow的外壳,将我的代码参照改成如下:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
QMainWindow window;
window.setCentralWidget(&w);
window.resize(900, 600);
window.show();
return a.exec();
}
问题解决。