Ошибка сегментации в 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 ответа

Изменить линию;

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

в

ui->textEdit->append(string);

и дайте мне знать, если это работает или нет.

Я не уверен, имеет ли textEdit класса QTextEdit. Если это так, и вы просто хотите добавить текст, попробуйте

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

Ui::grad->textEdit->append(string);
Ошибка здесь, но она не должна компилироваться.
Ui::grad это имя класса, вы не можете использовать оператор -> к этому. Вам определенно нужен какой-то экземпляр grad класс (не Ui::grad, просто grad вашего пространства имен) делать то, что вы хотите.

Также, как правило, не стоит называть классы так же, как объекты, я думаю, что вам нужно использовать некоторые соглашения об именах, чтобы облегчить поиск ошибок такого рода.

Другие вопросы по тегам