1、使用qmlRegisterType正确注册了类型,但是在qml内调用出错(linux下会提示cannot assign object to property)
解决:qml不是所有的元素都可以直接调用外部对象,ScrollView下就不行,使用Item来组织ScrollView里的内容,Item里面可以直接使用外部对象
2、使用QtXML不能读取或设置nodevalue的问题
解决:实际上这是没有弄清楚QtXML如何看待nodevalue的问题,虽然nodevalue仅仅是一行文本,但是QtXML仍然把它看为一个独立的子元素看待,这个子元素的类型是QDomText,解决方法很简单,假设当前节点名node是A(<A>b</A>)
node.firstChild().nodeValue可以取得当前文本b
node.firstChild().setNodeValue("c")可以设置当前节点A的节点值为c
3、关于QList removeOne出错的问题
请在对象内实现 == 重载,不然这个功能出错。
另外QT提供的removeAt等删除方式不太适合list这种数据结构,还是使用iterator来做比较安全
4、QSqlDatabasePrivate::addDatabase: duplicate connection name 问题:
解决:QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection'解决办法_奶爸的博客-CSDN博客 , 这里解释的很详细了
5、QFile在linux环境下,作为全局变量,或者静态变量,在类对象直接调用会崩溃,segnal fault错误,同样的windows环境是正常的
解决:不要作为全局变量或静态变量使用
6、QT/QML 发布windows程序,以下两个连接给了最完整的信息,照做即可
首先要运行一下windeployqt目录里的qtenv2.bat
Qt for Windows - Deployment | Qt 6.4
Deploy an Application on Windows - Qt Wiki
第二步,运行windeployqt.exe 程序名.exe/dll
- 如果包含多个文件,每个文件运行一次
- 更完整的发布文档:QT项目打包成软件进行发布的三种方式_qt 打包_程序员班长的博客-CSDN博客
7、QML程序有些win7下正常运行,有些不能正常运行,显卡驱动问题,需要支持OpenGL2.0
Qt 5 on Windows ANGLE and OpenGL - Qt Wiki
这里还有一个问题,如果你使用远程桌面的话,远程桌面的opengl版本不是实际显卡的版本,有可能造成远程桌面下不能运行QML程序(跟远程桌面下无法运行游戏一个道理),我注意到有些win7的电脑有这个问题,有些却没有。在接显示器的桌面环境下是正常的。