我在c ++中使用Qt一直在研究这个程序,到目前为止一直很好。但是,然后我需要将此程序移动到另一台机器。我有subversion,所以我提交了项目文件夹中的每个文件并在新机器上检查了它。在跳过一些环节以使其成功构建和运行之后,我收到了这个错误:
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);