Qt的两个QList成员变量导致崩溃
Qt two QList member variables causes crash
所以我不确定这是 Qt 中的错误还是我只是不明白,但我有这个 class:
class myClass : public QDialog, private Ui::myClass
{
Q_OBJECT
public:
explicit myClass(QWidget *parent = 0);
private:
QList<ushort> list1;
QList<ushort> list2;
}
我通过点击另一个 window 中的一个动作来创建这个 window:
void mainWindow::on_myClassAction_triggered()
{
myClass *mc = new mc(NULL);
mc->show();
}
所以现在事情变得奇怪了。即使我不在 myClass 中的任何地方使用 list1 和 list2,当我关闭或有时打开 myClass 时程序也会崩溃。如果我注释掉其中一个或两个,它就会起作用。这是怎么回事??
我正在使用 Qt Creator。我只是重新 运行 QMake,现在它可以工作了。绝对是 Qt/Qt Creator 中的某种错误。
这不是任何类型的错误。这是一个 classic 二进制不兼容问题:您有一些代码依赖于某些 classes 的布局,但过时的 Makefile 没有捕捉到这种依赖性。因此,当您更改 class 的布局时,相关代码不会重新编译。对于 qmake
来说,每次构建它时重新扫描整个项目以查找此类依赖项的成本太高了。当您更改代码以引入此类二进制不兼容性时,您需要重新 运行 qmake
。
对于小型项目,您可能只是希望始终 重建代码,强制 qmake 重新运行。
所以我不确定这是 Qt 中的错误还是我只是不明白,但我有这个 class:
class myClass : public QDialog, private Ui::myClass
{
Q_OBJECT
public:
explicit myClass(QWidget *parent = 0);
private:
QList<ushort> list1;
QList<ushort> list2;
}
我通过点击另一个 window 中的一个动作来创建这个 window:
void mainWindow::on_myClassAction_triggered()
{
myClass *mc = new mc(NULL);
mc->show();
}
所以现在事情变得奇怪了。即使我不在 myClass 中的任何地方使用 list1 和 list2,当我关闭或有时打开 myClass 时程序也会崩溃。如果我注释掉其中一个或两个,它就会起作用。这是怎么回事??
我正在使用 Qt Creator。我只是重新 运行 QMake,现在它可以工作了。绝对是 Qt/Qt Creator 中的某种错误。
这不是任何类型的错误。这是一个 classic 二进制不兼容问题:您有一些代码依赖于某些 classes 的布局,但过时的 Makefile 没有捕捉到这种依赖性。因此,当您更改 class 的布局时,相关代码不会重新编译。对于 qmake
来说,每次构建它时重新扫描整个项目以查找此类依赖项的成本太高了。当您更改代码以引入此类二进制不兼容性时,您需要重新 运行 qmake
。
对于小型项目,您可能只是希望始终 重建代码,强制 qmake 重新运行。