0

我一直在使用 C++ 中的 Qt 开发这个程序,到目前为止一切都很好。但是,我随后需要将该程序移动到另一台机器上。我有颠覆,所以我提交了项目文件夹中的每个文件并在新机器上检查了它。在跳过一些障碍以使其成功构建和运行后,我收到此错误:

 ASSERT: "dst.depth() == 32" in file qgl.cpp,.
 invalid parameter passed to c runtime function qt

我尝试单步执行程序以找到它崩溃的点,发现它是在所有内容都已初始化并且为继承 QMainWindow 类的类调用 show() 之后。c->showView()行调用 QMianWindow->show()。

 ----------main.cpp------------
 #include <QApplication>

 #include "ModelI.h"
 #include "ControllerI.h"
 #include "Model.h"
 #include "Controller.h"


 int main(int argc, char *argv[])
 {
      QApplication a(argc, argv);
      ModelI *m = new Model();
      ControllerI *c = new Controller(m);
      c->showView();                         <- ERROR HERE
      return a.exec();
 }

问题中令人困惑的部分是,当调用 show() 时,该程序在我的机器上运行良好。我不知道两台机器之间有什么不同会使程序的行为如此不同。两者都使用相同版本的 Qt (SDK 2010.05)。两者都使用 Eclipse 进行开发。我能找到的唯一区别是我的编译器是 MinGW 4.5.0 而另一台机器的编译器是 MinGW 4.5.2。

编辑1:

这就是 Controller::showView() 的样子。

 void Controller::showView()
 {
     mView->show();
 }

这就是 mView 的初始化方式。

 mView = new View(mModel, this);
4

0 回答 0