所以我不确定这是Qt中的错误,还是我不理解某些内容,但我有这个课程:
class myClass : public QDialog, private Ui::myClass
{
Q_OBJECT
public:
explicit myClass(QWidget *parent = 0);
private:
QList<ushort> list1;
QList<ushort> list2;
}
我通过点击另一个窗口中的操作来创建此窗口:
void mainWindow::on_myClassAction_triggered()
{
myClass *mc = new mc(NULL);
mc->show();
}
所以现在事情变得奇怪了。即使我不在myClass中的任何地方使用list1和list2,程序也会在我关闭或有时打开myClass时崩溃。如果我注释掉其中一个或两个,它就可以了。这是怎么回事?
答案 0 :(得分:1)
我正在使用Qt Creator。我刚刚重新开始使用QMake,现在它可以工作了。绝对是Qt / Qt Creator中的某种错误。
答案 1 :(得分:1)
这不是任何形式的错误。这是一个经典的二进制不兼容问题:你有一些代码依赖于你的某些类的布局,但是过时的Makefile并没有捕获这种依赖。因此,当您更改类的布局时,依赖代码不会被重新编译。 qmake
每次构建它时重新扫描整个项目以寻找这种依赖关系会太昂贵。当您更改代码以引入此类二进制不兼容性时,您可以重新运行qmake
。
对于小型项目,您可能只希望始终重建代码,强制重新运行qmake。