Qt应用程序可以在台式机上运行,但不能在笔记本电脑上运行
Qt app works on desktop, but not laptop?
我正在使用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教程相关文章:
- 是否可以将函数导入命名空间,但不能导出它?
- Eclipse 中的 Makefile 项目可以运行,但不能调试,为什么?
- SImple 代码在 DevC++ 中正确运行,但不能在 Visual Studio Code 中正常运行
- C++程序在Linux上完美运行,但不能在Windows上运行
- QT创建者简单的C 程序来自IDE,但不能从Command LNE运行
- 在我的CUDA运行时间计划中,CPU和GPU可以异步计算,但不能合作地计算
- 网络应用程序可以在模拟器中运行,但不能在iPhone上运行
- 程序可以在VS2013中运行,但不能在.exe中运行
- 我的C++ Unity 插件在编辑器中运行一次,但不能运行两次
- 可以从命令行运行C++代码,但不能从visual studio中的调试模式运行
- Netbeans Cpp编译和运行项目,但不能使用cppunit进行测试
- 当使用CreateProcessLogonW或类似的方法启动时,进程启动,但不能运行
- Qt应用程序可以在台式机上运行,但不能在笔记本电脑上运行
- Visual Studio 2010 c++ SDL游戏可以在它编译的计算机上运行,但不能在任何其他计算机上运行
- Qt GUI应用程序可以在我的电脑上运行,但不能在其他电脑上运行
- 编译后的python库可以在一台计算机上运行,但不能在另一台计算机上运行
- 程序可以在视频上运行,但不能在本地运行(可能是内存错误)
- 一切都是正确的,但不能运行:错误预期{或;
- SDL程序可以自己运行,但不能通过命令行运行
- Eclipse可以编译,但不能运行