Я пытаюсь получить некоторые атрибуты родительского виджета: SamplerModule
от его детей: InstrumentSelector
.Вызвать родительский метод QtWidget от дочернего
Из конструктора InstrumentSelector
я запускаю parent->metaObject()->className()
, который дает мне правильное имя (SamplerModule). Поэтому я уверен, что я нахожусь в нужном месте, чтобы вызвать один из моих открытых методов, например getT()
, определенный как открытый метод в моем SamplerModule
заголовке и файле cpp.
Но, когда я называю эту функцию, я получаю эту ошибку:
\app\widgets\instrumentselector.cpp:23: erreur : 'class QWidget' has no member named 'getT' msgBox.setText(parent->getT());
Так что я думаю, что это C++ и Qt основам, но я все еще учусь, что.
Есть ли у кого-то идеи?
Благодаря
Спасибо! Так как мой код довольно длинный, я постараюсь сделать это коротким. Подписи Selector: 'InstrumentSelector :: InstrumentSelector (QWidget * parent): QPushButton (parent)'. У меня 36 из этих кнопок в файле 'SamplerModule'UI. И я пытаюсь запустить 'parent-> getT() в моем конструкторе кнопок. Так что да, я чувствую, что мне нужно дать больше информации для экземпляров InstrumentSelector, но я действительно не понимаю, как это сделать. :/ –
Итак, вам нужно: «SamplerModule * module = dynamic_cast (parent);" а затем используйте «module-> getT()». Динамический бросок не сработает и вернет нулевой указатель, если родительский элемент не является SamplerModule. Вы также захотите прочитать на базовых и производных классах и как использовать указатели для каждого. Это важная концепция и без хорошего понимания, вы будете очень расстроены. :) –
goug
Большое спасибо! Но в этом случае 'module' будет« новым экземпляром »для« SamplerModule »? Не тот, где «InstrumentSelector» создан правильно? Так что, если мне нужно получить значение, которое установлено в этом конкретном экземпляре 'SamplerModule', если оно не может получиться таким образом? –