Ошибка сегментации в 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
вашего пространства имен) делать то, что вы хотите.
Также, как правило, не стоит называть классы так же, как объекты, я думаю, что вам нужно использовать некоторые соглашения об именах, чтобы облегчить поиск ошибок такого рода.