#c #qt #assert #qobject
#c #qt #утверждать #qobject
Вопрос:
Итак, у меня был этот базовый класс «Джетон». :
class Jeton: public QPushButton{ Q_OBJECT public: explicit Jeton(const unsigned int r, const unsigned int v, QWidget *parent = nullptr); unsigned int getNbJetons() const{ return nbJetons;} unsigned int getRang() const{ return rang;} void changeNbJetons(const unsigned int nb){nbJetons = nb;} private: unsigned int rang; unsigned int nbJetons; QPixmap* imgJeton; signals: void jetonClicked(Jeton*); public slots: public slots: void clickedEvent(){ emit jetonClicked(this); } };
И еще один класс под названием «PiocheJetons», который затем создал несколько объектов Jeton. Тем не менее, я попытался перенести это заявление :
layoutJetons = new QVBoxLayout(); for(size_t i = 0; i lt; 6; i){ nbJetons[i] = new QLCDNumber; jetons[i] = new Jeton(i, 6); nbJetons[i]-gt;display((int)jetons[i]-gt;getNbJetons()); connect(jetons[i], SIGNAL(jetonClicked(Jeton*)), this, SLOT(jetonClique(Jeton*))); layoutJetons-gt;addWidget(jetons[i]); layoutJetons-gt;addWidget(nbJetons[i]); }
Первоначально в конструкторе «PiocheJetons», в мой основной класс. Моя проблема здесь в том, что это сработало, но больше не работает и приводит к ошибке в названии этого поста.
Если вы можете мне помочь, я был бы благодарен! Спасибо,
Победитель
Комментарии:
1. Слишком мало деталей. Я думаю, что ошибка возникает во время выполнения; в этом случае какая строка вашего кода вызывает функцию, которая затем утверждает? Вы должны быть в состоянии понять это во время выполнения, глядя на стек вызовов
2. Код
!d-gt;isWidget
отображается только в одном месте в qobject.cpp а именно вQObject::setParent()
. Это делается для того, чтобы убедитьсяQObject::setParent()
, что виджеты не вызываются, вероятно, потому, что они должны звонитьQWidget::setParent()
. До сих пор остается неясным, что могло спровоцировать такую ситуацию.3. Похоже, согласно отладчику, это
this-gt;addLayout(layoutJetons)
в моем главном окне… Самое странное, что, как я уже сказал, это сработало при вызове из старого конструктора PiocheJetons.