2016-03-12 2 views
0

Créé plugin de concepteur personnalisé similaire à Container Extension Example. Après quelques modifications avec QDesignerCustomWidgetInterface, QDesignerContainerExtension et QExtensionFactory les classes et l'ajout de méthodes suivantes pour mon conteneur:Qt Designer se bloque avec le plugin personnalisé

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 a commencé à tomber en panne au démarrage avec mon plug-in. De toute façon faire debug plugin (extension) et trouvé la cause? Plugin construit en mode release avec les mêmes versions Qt et VS C++ que Qt Designer et Creator - Basé sur Qt 5.5.1 (MSVC 2013, 32 bit).

post-scriptum Ainsi, la méthode est le suivant: commenté l'extension et les classes usine - plante encore, sequentaly méthodes commentaires/décommente dans ma classe de widget: problème apparaît dans

Q_PROPERTY(QString pageTitle READ pageTitle WRITE setPageTitle STORED false)

et méthodes pageTitle et setPageTitle page courante lorsqu'aucun pages disponibles. Besoin de réfléchir à ce qu'il faut définir/afficher ici lorsqu'aucune page n'a été ajoutée. Ou ajoutez au moins 1 page par défaut.

Maintenant, Qt Designer se bloque lors de l'ajout d'un widget à un formulaire. Continuera à chercher la cause.

Répondre

0

Ajout de la vérification de l'index à la méthode widget(), fonctionne correctement pour le moment. Il faut donc vérifier toutes les méthodes que Qt Designer peut appeler pour un crash potentiel (par exemple, sans pages dans ce cas).