一、起因
今天又一次进入到QT官网,发现版本已经更新到5.14,而自己的版本还在5.11.1,于是决定更新个版本,由于自己以前在新版本被坑过,所有想着新版本肯定有BUG(但其实都是稳定版才发布的),于是选了个5.13.2版本。
二、发现
问题一
安装好后我发现我们所做的工程QT之前的库也不兼容了,报了一堆动态库无法定位程序输入点的错误,类似以下这样:
问题二
编译好之后我发现我QWebEngineView设置的背景颜色竟然失效了,我当时的代码是这样写的:
m_impl->pEngView->page()->setBackgroundColor(QColor(34,36,42));
三、解决
问题一
这个问题很好解决,我将所有QT的动态库替换掉,并且将所有自己使用QT编译的动态库重新编译,然后顺利解决了这个问题。
问题二
老实说我不明白为什么我的代码会失效,函数定义是这样的:
void setBackgroundColor(const QColor &color)
但是是传入QColor却失效了,再经过查阅一番资料后将其更改为以下:
m_impl->pEngView->page()->setBackgroundColor(Qt::transparent);
然后成功的变透明了,我只需要将他嵌入一个Widget中,然后将Widget更改为自己想要的颜色即可,也算是解决了问题。
四、最后
最后的最后,我去看了文档,发现了这样的一句话:
This property holds the page’s background color behind the document’s body.
You can set the background color to Qt::transparent or to a translucent color to see through the document, or you can set it to match your web content in a hybrid application to prevent the white flashes that may appear during loading.
The default value is white.
This property was introduced in Qt 5.6.
这里说了让我们可以设置Qt::transparent来让他成为透明,然后后面我表示不太理解,这到底是能不能直接设置颜色?如果不能,为什么QT5.11.1版本却可以?
那么这个问题只能自己慢慢摸索了
——一篇来自QT新人的文章