【qt踩坑】路径含中文导致的报错,以及 OpenGL的链接报错
背景
本来是准备采用VS+Qt插件的方式来开发Qt的,但是学习过程中发现,这种模式还是没有直接用Qt Creator
开发来的方便,插件这种模式坑多,功能不完善。
不过在直接使用Qt Creator
的时候也踩坑了:
(最后发现,Qt Creator
和 VS+qt插件 的两种方式可以混用。 vs 也可以直接打开qt的cmake工程。 也就是可以结合两者的优势!)
中文路径
之前,我使用VS+qt插件的方式的时候,根本没遇到不能是中文路径的问题。结果这里如果选择
MinGW作为编译器,居然不支持中文路径。如果有中文路径直接报错:
Error while building\deploying project OpenGL456 (kit:-1: Desktop Qt 6.7.2 MinGW 64-bit)
怎么,这年头支持个中文这么难吗?QT 还能不能好好玩耍了?
不过如果选择编译器 MSVC2019,这个构建没有报错了!也就是说,使用MSVC2019这个编译器能支持中文路径!
CMake
使用 QOpenGLWidget 空间,需要手动在CMake 中添加相应的库
find_package(Qt6 REQUIRED COMPONENTS OpenGLWidgets)
target_link_libraries(OpenGL789 PRIVATE Qt6::OpenGLWidgets)
多继承
添加这句后编译报错!链接时找不到这个函数:setPolygonMode。
void MyOpenGLWidget::setPolygonMode(bool isWire)
{
makeCurrent();
if (isWire)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
else
{
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
doneCurrent();
update();
}
原因时自定义的GLWidget类要进行多继承,还需继承:QOpenGLFunctions_3_3_Core
find_package(Qt6 REQUIRED COMPONENTS OpenGLWidgets)
find_package(Qt6 REQUIRED COMPONENTS Gui)
find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(OpenGL789 PRIVATE Qt6::OpenGLWidgets)
target_link_libraries(OpenGL789 PRIVATE Qt6::Gui)
target_link_libraries(OpenGL789 PRIVATE Qt6::OpenGL)