有谁能告诉我为什么我的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部分时的第一次迭代。然后我得到了一个分段错误。如果我需要发布更多代码,请告诉我们。
答案 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);
让我知道它是否有效。