Russian Qt Forum
Ноябрь 23, 2024, 02:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу разобраться в наследовании. Интерфейс второго потомка QWidget  (Прочитано 2528 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Декабрь 19, 2015, 02:41 »

Есть у меня класс EditorToolBar, наследник QWidget. И есть класс EditorToolBarAssistant, наследник EditorToolBar. То есть, EditorToolBarAssistant - это второй потомок QWidget.

И не компилируется метод addWidget в следующем коде:

Код:
editorMainLayer=new QGridLayout(editorMainScreen);
editorMainLayer->addWidget(editorToolBarAssistant, 0,0, 1,2);

Где editorToolBarAssistant - это экземпляр класса EditorToolBarAssistant.

Ошибка такая:

Код:
../mytetra/src/views/record/MetaEditor.cpp: In member function 'void MetaEditor::metaAssembly()':
../mytetra/src/views/record/MetaEditor.cpp:143:80: error: no matching function for call to 'QGridLayout::addWidget(EditorToolBarAssistant*&, int, int, int, int)'
   editorMainLayer->addWidget(editorToolBarAssistant,                   0,0, 1,2);
                                                                                ^
../mytetra/src/views/record/MetaEditor.cpp:143:80: note: candidates are:
In file included from /media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtWidgets/qlayout.h:166:0,
                 from /media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtWidgets/qboxlayout.h:37,
                 from /media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtWidgets/QBoxLayout:1,
                 from ../mytetra/src/views/record/MetaEditor.cpp:1:
/media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtWidgets/qgridlayout.h:95:17: note: void QGridLayout::addWidget(QWidget*)
     inline void addWidget(QWidget *w) { QLayout::addWidget(w); }
                 ^
/media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtWidgets/qgridlayout.h:95:17: note:   candidate expects 1 argument, 5 provided
/media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtWidgets/qgridlayout.h:96:10: note: void QGridLayout::addWidget(QWidget*, int, int, Qt::Alignment)
     void addWidget(QWidget *, int row, int column, Qt::Alignment = 0);
          ^
/media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtWidgets/qgridlayout.h:96:10: note:   candidate expects 4 arguments, 5 provided
/media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtWidgets/qgridlayout.h:97:10: note: void QGridLayout::addWidget(QWidget*, int, int, int, int, Qt::Alignment)
     void addWidget(QWidget *, int row, int column, int rowSpan, int columnSpan, Qt::Alignment = 0);
          ^
/media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtWidgets/qgridlayout.h:97:10: note:   no known conversion for argument 1 from 'EditorToolBarAssistant*' to 'QWidget*'

Вот я не пойму в чем проблема. То ли в наследовании (интеррфейс EditorToolBarAssistant не содержит интерфейса QWidget) то ли не может закомпилится класс EditorToolBarAssistant. Ибо далее в другом месте ошибка следующая:

Код:
../mytetra/src/views/record/MetaEditor.cpp: In member function 'void MetaEditor::clearAll()':
../mytetra/src/views/record/MetaEditor.cpp:232:24: error: invalid use of incomplete type 'class EditorToolBarAssistant'
  editorToolBarAssistant->switchAttachIconExists(false);
                        ^
In file included from ../mytetra/src/views/record/MetaEditor.h:8:0,
                 from ../mytetra/src/views/record/MetaEditor.cpp:8:
../mytetra/src/libraries/wyedit/Editor.h:47:7: error: forward declaration of 'class EditorToolBarAssistant'
 class EditorToolBarAssistant;
       ^
Makefile:11979: recipe for target 'build/MetaEditor.o' failed

По какой-то причине имеем incomplete type 'class EditorToolBarAssistant', а в самом классе EditorToolBarAssistant компилятор ошибок не оказывает.

В чем может быть проблема?

Исходники:

https://github.com/xintrea/mytetra_dev/commits/editorModification

Коммит: 0c1b073a21bc10635671666c44c96c3820c1dc7f
Записан

Собираю информацию по крупицам
http://webhamster.ru
Fat-Zer
Гость
« Ответ #1 : Декабрь 19, 2015, 04:04 »

editorMainLayer=new QGridLayout(editorMainScreen);
editorMainLayer->addWidget(editorToolBarAssistant, 0,0, 1,2);
ставлю на то, что сюда не включён хедер с определением EditorToolBarAssistant.
[added]
По какой-то причине имеем incomplete type 'class EditorToolBarAssistant', а в самом классе EditorToolBarAssistant компилятор ошибок не оказывает.
не заметил, значит точно в этом проблема...
« Последнее редактирование: Декабрь 19, 2015, 04:25 от Fat-Zer » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.066 секунд. Запросов: 23.