Search code examples
pluginsqt-designerqt5.5msvc12

Qt Designer crashes with custom plugin


Created custom designer plugin similar to Container Extension Example. After some modifications with QDesignerCustomWidgetInterface, QDesignerContainerExtension and QExtensionFactory classes and adding following methods to my container:

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 designer started to crash on start with my plugin. Any way do debug plugin (extension) and found the cause? Plugin build in release mode with same Qt and VS C++ versions as Qt Designer and Creator - Based on Qt 5.5.1 (MSVC 2013, 32 bit).

P.S. So method is following: commented out extension and factory classes - still crashes, sequentaly commented/uncommented methods in my widget class: problem appears in

Q_PROPERTY(QString pageTitle READ pageTitle WRITE setPageTitle STORED false)

and methods pageTitle and setPageTitle for current page when no pages available. Need think what to set/output here when no pages were added. Or add at least 1 page by default.

Now Qt Designer crashes on adding widget to a form. Will continue searching the cause.


Solution

  • Added index check to widget() method, works fine for now. So need to check all methods that Qt Designer can call for potential crash (for example, with no pages in this case).