Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 84
1

Проблемы с ui

04.06.2019, 16:36. Просмотров 2006. Ответов 6
Метки нет (Все метки)

Здравствуйте! В ходе создания проекта добавил пару кнопок на форму, дабы в коде можно было в ними взаимодействовать через ui, пересобрал проект, как я это обычно и делал в ситуациях, когда не видны изменения на форме через код.
Вижу, что всё усеяно красным в cpp файле главного кона, ругает ui.
Ошибок 1593

Первая ошибка возникает ещё в конструкторе:
C++
1
2
3
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)//Вот тут ошибка
Выглядит ошибка так: mainwindow.cpp:7:12: error: allocation of incomplete type 'Ui::MainWindow'
mainwindow.h:16:7: note: forward declaration of 'Ui::MainWindow'

Что делать? Я пробовал чистить проект, пересобирать, перезагружать qt creator и даже менять тип сборки с Отладка на Релиз, ничего, как вы можете понимать, не вышло.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2019, 16:36
Ответы с готовыми решениями:

Проблемы с инетом, не отправляется почта, проблемы со связью с другой организацией
Здравствуйте. Есть проблемка. Такая ситуация - Организация. Компьютеры подключены по локалке....

Проблемы с CAN
Есть плата управления работающая на AT90CAN128 принимает запрос и отвечает некоторыми данными. Но...

проблемы...
есть сайтик. ему месяца полтора. добавил в Я. он его проиндексировал и забыл... а потом и вовсе...

Проблемы с US.
#include <iostream> using namespace std; int main() { unsigned short post = 32US; // C...

6
5859 / 3987 / 1636
Регистрация: 07.05.2019
Сообщений: 12,400
Записей в блоге: 1
04.06.2019, 16:55 2
Цитата Сообщение от Alex_fmv Посмотреть сообщение
Выглядит ошибка так: mainwindow.cpp:7:12: error: allocation of incomplete type 'Ui::MainWindow'
mainwindow.h:16:7: note: forward declaration of 'Ui::MainWindow'
Нужно сделать #include заголовка, h-файла, в котором утебя объявлен класс Ui::MainWindow
0
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 84
04.06.2019, 18:13  [ТС] 3
Но он итак там есть насколько я могу судить:

C++
1
2
3
#include "ui_mainwindow.h"
#include "mainwindow.h" //Вот он
#include <QDebug>

Вот объявление внутри него:
C++
1
2
3
namespace Ui {
class MainWindow;
}
0
5859 / 3987 / 1636
Регистрация: 07.05.2019
Сообщений: 12,400
Записей в блоге: 1
04.06.2019, 18:16 4
Цитата Сообщение от Alex_fmv Посмотреть сообщение
Вот объявление внутри него:
C++Выделить код
1
2
3
namespace Ui {
class MainWindow;
}
Это как раз то что называется forward declaration of 'Ui::MainWindow'
Надо найти где сам класс находится
C++
1
2
3
4
5
6
7
8
namespace Ui {
class MainWindow 
: public ....
{
................................
};
 
}
0
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 84
04.06.2019, 19:48  [ТС] 5
Я так понимаю, это он: ui_mainwindow.h
Но тоже уже подключен.

Я зашёл в него и увидел нечто, что, как мне кажется, не совсем верно (хотя я и не уверен)


Посмотрите на название Ui_drop_scale_button в имени класса, почему класс называется как та самая проблемная кнопка?
Может нужно поиграть с названиями класса?

C++
1
2
3
4
5
6
7
8
9
10
11
class Ui_drop_scale_button
{
public:
//Много кода и объявлений 
namespace Ui {
    class drop_scale_button: public Ui_drop_scale_button {};
} // namespace Ui
 
QT_END_NAMESPACE
 
#endif // UI_MAINWINDOW_H
Добавлено через 8 минут
Это поразительно!

Я буквально интуитивно менял названия и всё заработало! Это чудо какое то!

Вот как я поправил файл:

C++
1
2
3
4
5
6
7
class Ui_MainWindow //Сменил здесь название
{
public:
//...Много кода
namespace Ui {
    class MainWindow: public Ui_MainWindow {}; //Сделал по аналогии с тем, как он было в прошлом файле
} // namespace Ui
Добавлено через 54 минуты
Всё оказалось не так просто, по началу всё заработало, но стоит поменять форму, сразу же генерируется новый файл с теми же ошибками
0
281 / 170 / 62
Регистрация: 13.03.2019
Сообщений: 414
04.06.2019, 20:03 6
Цитата Сообщение от Alex_fmv Посмотреть сообщение
Всё оказалось не так просто, по началу всё заработало, но стоит поменять форму, сразу же генерируется новый файл с теми же ошибками
Это потому что вы меняете ui_mainwindow.h, а он генерится каждый раз, когда меняется форма (как .obj).
Ошибку с именами надо искать и справлять в .ui файле.
0
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 84
04.06.2019, 20:13  [ТС] 7
Всё теперь точно готово, проблема крылась вот в чём (оказалось, если по разбираться в том, как строится ui.h файл можно понять как оно устроено): я случайно сменил имя формы на имя той самой проблемной кнопки, как вы понимаете, стоило сменить имя обратно, qt снова стал нормально строить файл.
Надеюсь, кому то поможет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2019, 20:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Проблемы с ОС
Привет всем у меня такая проблема . При установке винды выдает различные ошибки что не удается...

Проблемы с gets
здравствуйте,помогите пожалуйста сразу хочу заметить,что препод нас заставляет писать все в...

Проблемы с БД
Задание следующее: Разработать базу данных «Домашняя фонотека» (названия аудиокассет, компакт...

Проблемы с WI FI
Подключился к wifi, а он открывает только один сайт. Другие просто не грузит


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.