Qt应用程序可以在台式机上运行,但不能在笔记本电脑上运行

Qt app works on desktop, but not laptop?

本文关键字:运行 但不能 电脑 笔记本 台式机 应用程序 Qt      更新时间:2023-10-16

我正在使用Qt编写一个OpenGL应用程序,它在我的台式机上构建和运行良好,但是当我尝试在笔记本电脑上运行完全相同的代码时,它构建但不输出任何东西?这是我的main.cpp

#include <QtGui/QApplication>
#include <QtOpenGL/QGLWidget>
#include "GLWidget.h"
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    GLWidget window;
    window.resize(1050,700);
    window.setFixedSize(1050, 700);
    window.show();
    return app.exec();
}

我不希望用户能够调整窗口的大小,因此固定的大小。如果我在main的最后一行设置了一个断点,在我的笔记本电脑上它永远不会到达它。我已经遍历了代码,在调用show()之后(这只是一个内联函数),调试器以代码0结束。我检查了所有的项目构建和运行设置,它们在两台机器上都是相同的。我的台式机有一个1920x1080的显示器,但我的笔记本电脑只有1366x768,这有什么关系吗?是否有某种内部检查正在进行的引擎盖下的Qt,取决于我的屏幕分辨率?这是我唯一能想到的

我不希望用户能够调整窗口的大小

我可以问为什么吗?我可以假设你希望窗口是一个固定的大小,因为你想使用OpenGL来生成一个正好这个大小的图像?如果是这样,那么我必须告诉你,事情不会那样发展的。OpenGL实现将只渲染将在屏幕上可见的内容(像素所有权测试)。如果窗口的某些部分不可见(在您的情况下,这将是在笔记本电脑上的情况),这些像素根本不渲染。读取帧缓冲区将使这些像素未定义。

解决这个问题的正确方法是使用PBuffer帧缓冲对象(FBO)。FBO更容易使用,但在Windows上的支持并不广泛(Windows上的英特尔图形对FBO的支持相当差)。fbo被所有Linux OpenGL实现(Mesa(也包括Intel), ATI/AMD和NVidia)所支持。网上有很多FBO和PBuffer教程
相关文章: