В процессе преподавания программированию на Qt наработал порцию стандартных ошибок, которые допускают студенты. Ниже представлены некоторые из них.

Забыли закрыть программу

error: ld returned 1 exit status

Ошибка «error: ld returned 1 exit status»

Если возникает такая ошибка, то вы забыли закрыть запущенное приложение. Qt пытается создать новый EXE файл, но так как открыта старая версия, то вылезает ошибка.

Забыли удалить объявление метода

error: undefined reference to `MainWindow::on_textEdit_destroyed()'

Ошибка «error: undefined reference…»

Если возникает такая ошибка (или подобного типа), то вы перешли к слоту какого-то объекта (в данном слоте textEdit), создали метод, он вам не понравился, и вы его удалили.

Но метод объявлен был еще в mainwindow.h, и оттуда вы объявление не удалили. Удалите:

![Объявление метода тоже нужно удалить(img/error-undefined-reference-2.png)

Редактируемый проект не активный

Иногда возникает проблема. Вы редактируете проект, компилируете проект, но вместо вашей программы вылезает другая программа.

Проверьте, является ли ваш редактируемый проект активным или нет:

Необходимый проект неактивный

Если проект активный, но всё равно изменения не отражаются на компилируемом приложении, то перестройте проект:

Попытка перестроить проект

Обнуляйте переменные

Вы запрограммировали код нахождения суммы чисел:

int s;
for (int i=0;i<10;i++)
    s=s+i;

ui->textEdit->insertPlainText(QString::number(s));

Но он выдает громадные числа, например: 2686553.

В C++ переменные хранят мусор после своего создания, они не равны нулю по умолчанию. А если к мусору прибавить число, то получится мусор. Вот правильный код:

int s=0;
for (int i=0;i<10;i++)
    s=s+i;

ui->textEdit->insertPlainText(QString::number(s));

Не во всех строчках в конце стоит точка с запятой

Решили найти сумму чисел:

int s=0;
for (int i=0;i<10;i++);
    s=s+i;

ui->textEdit->insertPlainText(QString::number(s));

А при компилировании вылетает ошибка: error: name lookup of 'i' changed for ISO 'for' scoping [-fpermissive].

В циклах и условиях в конце строчки точка с запятой не ставится. Вот правильный код:

int s=0;
for (int i=0;i<10;i++)
    s=s+i;

ui->textEdit->insertPlainText(QString::number(s));

Не забывайте точку с запятой

int s=0;
for (int i=0;i<10;i++)
    s=s+i

ui->textEdit->insertPlainText(QString::number(s));

Ошибка при отсутствии точки запятой

А вот в других случаях точка с запятой нужна. И если ошибка выдается такая: error: expected ';' before, то в предыдущей строке вы забыли точку с запятой. Вот правильный код:

int s=0;
for (int i=0;i<10;i++)
    s=s+i;

ui->textEdit->insertPlainText(QString::number(s));