0

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

“毕业.h”

namespace Ui {
class grad;
}

class grad : public QMainWindow
{
  Q_OBJECT

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

private:
Ui::grad *ui;
};

“课程.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 部分。然后我得到一个分段错误。让我知道是否需要发布更多代码谢谢。

4

3 回答 3

1

我不确定 textEdit 是否属于 QTextEdit 类。如果是这样,并且您只想附加文本,请尝试

textEdit->setText(textEdit->plainText().append(string));
于 2013-08-02T08:55:57.677 回答
1

换线;

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

ui->textEdit->append(string);

让我知道它是否有效。

于 2013-08-02T09:13:40.370 回答
1

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

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

于 2013-08-02T09:01:40.520 回答