Qt Designer аварийно завершает работу с пользовательским плагином

Создан собственный подключаемый модуль дизайнера, аналогичный примеру расширения контейнера. После некоторых модификаций с классами QDesignerCustomWidgetInterface, QDesignerContainerExtension и QExtensionFactory и добавления следующих методов в мой контейнер:

Q_OBJECT
  Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex)
  Q_PROPERTY(QString pageTitle READ pageTitle WRITE setPageTitle STORED false)

public:
  WidgetBox(QWidget *parent = 0);

  int count() const { return mTreeWidget->topLevelItemCount(); }
  QWidget* widget(int index) const;
  QString pageTitle() const;

public slots:
  void setCurrentIndex(int index);

  void addPage(QWidget *widget);
  void insertPage(int index, QWidget *widget);
  void removePage(int index);
  int currentIndex() const { return mTreeWidget->currentIndex().row(); }

  void setPageTitle(QString const &newTitle);


protected:
  QTreeWidgetItem * addCategory(QString pageName);
  QTreeWidgetItem * insertCategory(int index, QString pageName);

  PageButton *categoryButton(int index) const;

  void createContainerWidget(QTreeWidgetItem* page, QWidget *widget);
  void createCategoryButton(QTreeWidgetItem* page, QString pageName);

signals:
    void currentIndexChanged(int index);
    void pageTitleChanged(const QString &title);

Дизайнер Qt начал падать при запуске с моим плагином. В любом случае сделать отладку плагина (расширения) и найти причину? Сборка плагина в режиме выпуска с теми же версиями Qt и VS C++, что и Qt Designer и Creator — на основе Qt 5.5.1 (MSVC 2013, 32-разрядная версия).

P.S. Таким образом, метод следующий: закомментированные классы расширения и фабрики - все еще сбой, последовательно прокомментированные / раскомментированные методы в моем классе виджетов: проблема появляется в

Q_PROPERTY(QString pageTitle READ pageTitle WRITE setPageTitle STORED false)

и методы pageTitle и setPageTitle для текущей страницы, когда нет доступных страниц. Нужно подумать, что здесь установить/вывести, если страницы не добавлены. Или добавьте хотя бы 1 страницу по умолчанию.

Теперь Qt Designer падает при добавлении виджета в форму. Буду продолжать искать причину.


person Aleksey Kontsevich    schedule 12.03.2016    source источник


Ответы (1)


Добавлена ​​проверка индекса в метод widget(), пока работает нормально. Поэтому необходимо проверить все методы, которые Qt Designer может вызвать на предмет возможного сбоя (например, в данном случае без страниц).

person Aleksey Kontsevich    schedule 13.03.2016