2016-03-12 6 views
0

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

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. Так метод следующим образом: закомментирована расширение и заводские классы - по-прежнему падает, sequentaly комментируемые/незакомментированной методы в моем классе виджета: проблема появляется в

Q_PROPERTY(QString pageTitle READ pageTitle WRITE setPageTitle STORED false)

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

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

ответ

0

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