Qt、OpenGL、stb——image

img


为什么这段代码调用stbi_load()会出错,if语句会进入else的条件内,这段代码的文件地址应该是对的,换成.png的图片也还是会出错

首先,stb_image是一个非常流行的用于加载图片的C库,它可以加载多种格式的图片,包括PNG、JPEG、BMP等等。而Qt是一个跨平台的C++应用程序开发框架,它提供了很多方便的工具和类库,包括OpenGL的支持。
在使用stb_image加载图片时,需要注意以下几点:
1. 确认图片文件路径是否正确,可以使用绝对路径或相对路径,但需要注意路径中的斜杠方向。
2. 确认图片文件格式是否正确,stb_image只支持少数几种格式的图片,如果图片格式不正确,会导致加载失败。
3. 确认图片文件是否存在,如果文件不存在,也会导致加载失败。
在这段代码中,if语句进入else的条件内,说明stbi_load()函数返回了NULL,即加载图片失败。可能的原因有以下几种:
1. 图片文件路径不正确,可以检查一下路径是否正确,或者使用绝对路径来加载图片。
2. 图片文件格式不正确,可以尝试使用其他格式的图片来加载,比如JPEG或BMP格式。
3. 图片文件不存在,可以检查一下文件是否存在,或者尝试使用其他图片文件来加载。
4. 内存不足,如果图片文件过大,可能会导致内存不足,可以尝试使用较小的图片文件来加载。
总之,需要仔细检查代码和图片文件,找出问题所在,才能解决加载失败的问题。不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/260797
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:基于Qt绘制OpenGL界面的解决方案
  • 除此之外, 这篇博客: Qt 使用阿里云字体图标中的 ( 当然你可以选择下载png , 然后按照 qt正常设置图片的方法 , 经过测试 , 还是应该选择这种方法) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在这里插入图片描述
    2.

    详解使用icomoon生成字体图标的方法并应用 https://icomoon.io/
    3. 注意 在这里插入图片描述
    注意复制的是这里的方块 , 因为电脑上没有这个字体库 , 所以不能显示 , 复制到qt设计师之后 显示如下:
    在这里插入图片描述

    4.把2步骤下载的icomoon.zip 里的icomoon.ttf 解压出来 放在资源文件夹;

    5.1 接下在 .py中:接下在 .py中指定字体:

    def main1():
        app = QApplication(sys.argv)
        font_path = ROOT_PATH + '/src/icomoon.ttf'
        print(font_path)
        # 指定全局字体 !
        fontId = QFontDatabase.addApplicationFont(font_path)
    

    5.1 在设计师指定font-family"icomoon" 后编译在这里插入图片描述
    运行结果 :
    在这里插入图片描述
    结论 : 发现其实字体文件也是需要打包的 , 并且 字体的文字 通过设置文本来改变 并且 字体 有些编辑器不识别 , 就算能识别 也不利于后期代码维护, 本文做一个尝试 ,


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^