Создан собственный подключаемый модуль дизайнера, аналогичный примеру расширения контейнера. После некоторых модификаций с классами 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 падает при добавлении виджета в форму. Буду продолжать искать причину.