Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
LE0N |
27.3.2009, 12:40
Сообщение
#1
|
|
Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: 0
|
Имеется форма, в которой разный функционал, но одинаковый интерфейс(GUI).
Хотелось бы эту форму использывать в двух разных классах отнаследованных от QDialog.... Прикрутил ui_form.h к хиадеру с новым ребёнком QDalog, форма всё нормально отображается. Но вот слоты, почему то, не работают.(Они подключаются в ui_form.h ) Ругается примерно так: Цитата Object::connect: No such slot QDialog::select_product_type(int) in ui_shipmentform.h:77 Object::connect: (sender name: 'comboBox') Object::connect: (receiver name: 'ShipmentFormClass') Хотя слот объявлен.... Во второй форме, где тоже объявлен этот слот, всё работает на 5+. В чём проблема? Сообщение отредактировал LE0N - 27.3.2009, 12:42 |
|
|
|
|
Litkevich Yuriy |
27.3.2009, 13:08
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(LE0N @ 27.3.2009, 15:40) Link QDialog::select_product_type(int) в этом и проблема, у QDialog нет такого слота.
|
|
|
|
|
LE0N |
27.3.2009, 13:31
Сообщение
#3
|
|
Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: 0
|
Так я наследника QDialog передаю...
|
|
|
|
|
Litkevich Yuriy |
27.3.2009, 13:41
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(LE0N @ 27.3.2009, 16:31) Link Так я наследника QDialog передаю... ошибка, которую сообщает Qt, говорит о том, что в соединении учавствует слот, которого нет. наследник тут непричем, смотри как соединение происходит.
|
|
|
|
|
LE0N |
27.3.2009, 13:58
Сообщение
#5
|
|
Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: 0
|
Ну и, собственно, ui.setupUi(QDialog*) коннектит сигналы к слотам наследника. Я так понимаю, что QT ругается на QDialog потому что в setupUi передаётся указатель на QDialog типа... НО! Тоже самое делается во второй форме. И там всё работает.... |
|
|
|
|
igor_bogomolov |
27.3.2009, 17:00
Сообщение
#6
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29
|
Цитата(LE0N @ 27.3.2009, 12:40) Link Цитата Object::connect: No such slot QDialog::select_product_type(int) in ui_shipmentform.h:77 Object::connect: (sender name: 'comboBox') Object::connect: (receiver name: 'ShipmentFormClass') Всю информацию компилятор вам сообщил, что тут еще непонятного? Смотрим приведенный код: Слот select_product_type(int) принадлежит классу shipment_operation. Коннект делается в классе ShipmentFormClass, следущим образом Цитата QObject::connect(comboBox, SIGNAL(currentIndexChanged(int)), ShipmentFormClass, SLOT(select_product_type(int))); Приемщик сигнала в данном случае ShipmentFormClass. Есть у него слот select_product_type(int)? НЕТ. Об этом компилятор вам подробно и сообщает. |
|
|
|
|
LE0N |
27.3.2009, 17:44
Сообщение
#7
|
|
Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата void setupUi(QDialog *ShipmentFormClass); ШипментФормКласс в данном случае - указатель на shipment_operation Это следует из: Цитата ui.setupUi(this); В конструкторе shipment_operation Или я чего-то не понимаю? |
|
|
|
|
Litkevich Yuriy |
27.3.2009, 17:52
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Помоему всё дело в этих строчках:
Цитата(LE0N @ 27.3.2009, 16:31) Link class shipment_operation : public QDialog { а где макрос Q_OBJECT?
public: |
|
|
|
|
igor_bogomolov |
27.3.2009, 18:27
Сообщение
#9
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29
|
Цитата(LE0N @ 27.3.2009, 17:44) Link ШипментФормКласс в данном случае - указатель на shipment_operation Это следует из: Да, это я недоглядел, признаю. Талько тогда исходя из Это уже указатель на QDialog, в котором так же нет слота select_product_type(int) |
|
|
|
|
Litkevich Yuriy |
27.3.2009, 19:11
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(igor_bogomolov @ 27.3.2009, 21:27) Link Это уже указатель на QDialog, указатель показывает на shipment_operation, в котором есть такая функция, но она ещё не слот, т.к. нет макроса Q_OBJECT
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 11:48 |