2009-09-28 12 views
0

J'ai donc une boîte de dialogue modale:QT 4.5 - avoir des problèmes pour obtenir une boîte de dialogue modale pour être modale. Quels sont les pièges à faire attention?

class GraphChooser : public QDialog 
{ 

Q_OBJECT 

public: 
    GraphChooser(QWidget * parent = 0); 
    virtual ~GraphChooser(); 
    void addGraphItem(QString factoryKey, QString graphDescription); 

public slots: 
    void graphConfirmed(void); 
    void showDialog(void) { exec(); }; 

private: 
    QMap<QString, QString> graphNameToFactoryMap_; 
    Ui::GraphChooser ui; 


signals: 
    void graphSelected(QString& selected); 

}; 

Ce que je brancher un bouton pour exécuter

connect(dataForm_.btnAddWindow, SIGNAL(clicked()), 
     &graphChooser_, SLOT(exec())); 

Et la boîte de dialogue n'est pas modale. J'ai aussi essayé setModal (true) avec un vieux show(). Y at-il autre chose que je devrais surveiller?

Répondre

1

Vous devez définir le widget parent lorsque vous créez le dialogue. Sinon, le dialogue n'a aucune idée de ce qu'il devrait être modal.

+0

Ou vous pouvez définir le QDialog comme ApplicationModal en utilisant la fonction SetModality (Qt :: Modality) avec Qt :: ApplicationModal –