У меня есть класс, основанный на QWidget
, который мне нужно создать из другого объекта.QWidget, созданный в aux-методе, не отображается/ничья
Если я создаю виджет в теле своего класса родительского виджета, это все хорошо:
new NodeWidget(rootItem, this); // this works
Но когда я использую метод Окс виджет создан, но никогда не обращается.
rootItem->createWidget(this); // internally rootItem does the same thing as above
Сам метод:
void createWidget(QWidget * target) {
if (!_ui) _ui = new NodeWidget(this, target);
...
}
Как я понимаю, оба подхода делают то же самое, но первые один работает, а второй один не делает. Создается конструктор NodeWidget
, но виджет не отображается в родительском виджетах, а paintEvent никогда не вызывается. Любые идеи почему?
EDIT: Это, конечно, странно, я заметил, что в следующей строке:
new QPushButton(this);
работает при вызове в конструктор родительского виджета, но не тогда, когда вызываются из события mousePress. В чем разница?
Возможно, я неправильно предположил, что Qt автоматически «покажет» новые виджеты каждый раз, когда пользовательский интерфейс будет перерисован. Будет проверять это сейчас. –
Теперь я получаю ошибку сегментации, когда я вызываю 'show()', я проверяю указатель, возвращаемый с 'new', и он действителен, так что же с segfault? –
Вам нужно отлаживать код, мы не можем догадаться, почему вы получаете ошибку сегментации, если вы не можете исправить его, вам нужно показать больше кода (проверьте неинициализированные/недействительные указатели на экземпляр класса) – Zlatomir