qt中的分段错误

时间:2013-08-02 08:43:42

标签: qt

有谁能告诉我为什么我的printn函数出现分段错误?

“grad.h”

namespace Ui {
class grad;
}

class grad : public QMainWindow
{
  Q_OBJECT

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

private:
Ui::grad *ui;
};

“course.cpp”

void course::printr(vector<course> c){
    QString string;
    for(int i = 0; i < (int)c.size();i++){
        string = QString::fromStdString(c[i].getTitle());
        Ui::grad->textEdit->append(string);
    }
}

调试器显示正确的输出,直到for循环到达Ui :: grad部分时的第一次迭代。然后我得到了一个分段错误。如果我需要发布更多代码,请告诉我们。

3 个答案:

答案 0 :(得分:1)

我不确定textEdit是否属于Class QTextEdit。如果是这样,你只想附加文本试试

textEdit->setText(textEdit->plainText().append(string));

答案 1 :(得分:1)

Ui::grad->textEdit->append(string);左错误,但不应该编译。
Ui::grad是类的名称,不能使用运算符->。你肯定需要一些grad类的实例(不是Ui::grad,只是命名空间的grad)才能做你想做的事。

另外,以与对象相同的方式命名类通常不是一个好主意,我认为你需要使用一些命名约定来使这种错误更容易找到。

答案 2 :(得分:1)

更改行;

Ui::grad->textEdit->append(string);

ui->textEdit->append(string);

让我知道它是否有效。