【问题标题】:Segmentation fault error on setupUi()setupUi() 上的分段错误错误
【发布时间】:2014-08-25 03:30:06
【问题描述】:

我在 Qt 中创建了一个项目。我在 Qt Creator 中进行了设计。一切正常,但现在,我一直在 mainForm 中的 ui->setupUi(this) 方法上看到 Segmentation fault 错误。我知道这个问题的原因是什么。我尝试在互联网上寻找,但没有发现任何有用的东西。我还评论了我最近的更改 - 没有积极的结果......下面我发布了我的 mainForm 的 .cpp 文件的代码:

#include "apgmain.h"
#include "ui_apgmain.h"
#include "stdlib.h"
#include "QRegExp"
#include "errorvaldialog.h"

APGMain::APGMain(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::APGMain)
{
    ui->setupUi(this); //This line causes error!!!
}

APGMain::~APGMain()
{
    delete ui;
}

void APGMain::on_pushButton_clicked()
{
    //Exit-button
    std::exit(0);
}

void APGMain::on_pushButton_2_clicked()
{
    //Generate-button
    bool temp = true;
    QString tempStr = ui->lineEdit->text();
    int minlength = tempStr.toInt(&temp);
    if(temp&&minlength>0&&minlength<129)
    {

    }
    else
    {
        ErrorValDialog* errorval = new ErrorValDialog(this);
        errorval->show();
        return;
    }
}

void APGMain::on_comboBox_currentIndexChanged(const QString &arg1)
{
    if(arg1 == "random password generation")
    {

    }

    else
    {

    }

}

apgmain.h:

#ifndef APGMAIN_H
#define APGMAIN_H

#include <QMainWindow>

namespace Ui {
class APGMain;
}

class APGMain : public QMainWindow
{
    Q_OBJECT

public:
    explicit APGMain(QWidget *parent = 0);
    ~APGMain();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_comboBox_currentIndexChanged(const QString &arg1);

private:
    Ui::APGMain *ui;
};

#endif // APGMAIN_H

任何提示都会非常有用。简单的调试并没有给我任何东西。

【问题讨论】:

  • 我在on_pushButton_2_clicked() 中看到内存泄漏,但您显示的任何代码都不会导致您的段错误。你从调试这个段错误中学到了什么?
  • 你能告诉我们setupUi的实现吗?
  • @thurizas 我没有实现这个功能。它是自动生成的
  • 你知道这种情况的原因吗?
  • @Ty221,我知道setupUi是uic自动生成的,就是想看看有没有问题。另外,您说一切正常,现在您遇到了这个问题。你还记得在“一切正常”和现在之间你做了什么吗?

标签: c++ qt debugging segmentation-fault qt-creator


【解决方案1】:

您应该尝试清理然后重新构建您的项目。
有时 QtCreator 会发疯并出现此问题,因此您需要手动执行此操作。
您也可以尝试运行qmake。为此,只需选择此选项,只需转到菜单栏中的 Build 选项卡并选择“run qmake”(或 smith 非常相似,它将放在底部)。
希望,这会有所帮助。

【讨论】:

  • 这应该在 QT 本身中提到,我只是因为调试这么简单的解决方案而失去了一个小时的生命。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 2017-09-17
  • 2010-10-30
  • 2015-01-20
  • 2015-09-18
  • 1970-01-01
相关资源
最近更新 更多