Qt 两个 QList 成员变量导致崩溃

Qt two QList member variables causes crash

本文关键字:崩溃 变量 成员 两个 QList Qt      更新时间:2023-10-16

所以我不确定这是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 时,程序也会崩溃。如果我注释掉一个或两个,它就会起作用。这是怎么回事??

我正在使用Qt Creator。我刚刚重新运行了 QMake,现在它可以工作了。肯定是Qt/Qt Creator中的某种错误。

这不是任何类型的错误。这是一个典型的二进制不兼容问题:您有一些代码依赖于某些类的布局,但过时的 Makefiles 没有捕获该依赖项。因此,当您更改类的布局时,不会重新编译依赖代码。对于qmake来说,每次构建项目时重新扫描整个项目以查找此类依赖项的成本太高了。当您更改代码以引入此类二进制不兼容性时,您需要重新运行qmake

对于小型项目,您可能只是希望始终重新生成代码,强制重新运行 qmake。