Qt Segfault - 非编码错误

时间:2012-01-11 02:45:37

标签: qt segmentation-fault qt-creator

我正在创建一个非常简单的类作为更大项目的一部分。这节课很简单:

class Login : public QDialog
{
    Q_OBJECT
    private:
        QLineEdit* txtUser;
        QLineEdit* txtPass;
        void setupUI();
    public:
        Login(QWidget* parent = 0);
};

尝试创建setupUI()函数时,行txtUser = new QLineEdit;会崩溃。我尝试过改变很多东西而没有任何帮助。我接受了项目,复制了它,并删除了除了这个类和main.cpp之外的所有内容,并且没有错误。我回到原来的项目(重装Qt Creator),但仍然失败了。在某种冲突的情况下,我开始评论来自main的随机自写头文件。在评论出每个之后,我会重新编译并运行。每次它都会继续失败。在最后一个之后,它起作用了。然后,我重新启用了所有内容,它再次运行良好。

所以,我的问题是,什么可能导致这种简单代码的这种类型的段错误?另外,如果没有更改代码,我的更改可能会修复它吗?基本上,如果我再次发生这个问题并且我确定没有错误,我应该采取什么步骤?

请记住我在Windows中使用Qt和Qt Creator。

最后,为了完成,这里是setupUI()

中的代码
void Login::setupUI()
{
    QVBoxLayout* main = new QVBoxLayout;
    QHBoxLayout* userBox = new QHBoxLayout;
    QHBoxLayout* passBox = new QHBoxLayout;
    txtUser = new QLineEdit;
    txtPass = new QLineEdit;
    userBox->addWidget(new QLabel("User Name:"));
    userBox->addWidget(txtUser);
    passBox->addWidget(new QLabel("Password:"));
    txtPass->setEchoMode(QLineEdit::Password);
    passBox->addWidget(txtPass);
    main->addLayout(userBox);
    main->addLayout(passBox);
    setLayout(main);
}

1 个答案:

答案 0 :(得分:2)

有时您需要运行qmake才能使其正常运行。你可以从QtCreator那里做到这一点。