connect problem qcombobox - qdoublespinbox



  • Hallo,
    ich habe das folgende Problem:
    Ich möchte, wenn man etwas bei der combobox ändert, bzw. einstellt, dass eine Funktion(change(double dnum);) aufgerufen wird.
    Ich versuche dies zur Zeit folgendermassen:

    connect (ui4.comboBox, SIGNAL(activated( int)),
    		this, SLOT( change(ui4.doubleSpinBox->value())));
    

    es passiert leider gar nichts. Es scheint als werde diese Funktion gar nie aufgerufen?
    Noch ein bisschen Code:

    //Einheiten.h
    ...
    public:
       Einheiten();
       ~Einheiten() {}
    private:
    	Ui::Einheiten ui4;
    
    public slots:
    	void myclose();
    ...
    
    //Einheiten.cpp
    Einheiten::Einheiten() {
    	ui4.setupUi(this);
    	connect (ui4.doubleSpinBox, SIGNAL(valueChanged(double)),
    		this, SLOT( change(double)));
    	connect (ui4.comboBox, SIGNAL(activated( int)),
    		this, SLOT( change(ui4.doubleSpinBox->value())));
    	connect (ui4.comboBox_3, SIGNAL(activated( int)),
    		this, SLOT( change(ui4.doubleSpinBox->value())));
    }
    
    void Einheiten::change(double dnum){...}
    

    void change(double dnum);



  • nur dass es niemand verwirrt es sollte so aussehn:

    //Einheiten.h
    ...
    public:
       Einheiten();
       ~Einheiten() {}
    private:
        Ui::Einheiten ui4;
    
    public slots:
        void myclose();
        void change(double dnum);
    ...
    

    die funktion is rausgefallen

    Danke schon mal für die Antworten



  • Die Parameter die dem Slot uebergeben werden muss das Signal mitliefern.
    In Deinem Fall kann das Signal "activated" nur einen Integer liefern.
    Auf das "value" Deiner doubleSpinBox musst Du dann im Slot manuell zugreifen.
    Wenn Du Dir die Debug-Meldungen in der Konsole anschaust steht da auch dass Signal & Slot nicht verbunden werden konnten.

    // ...
    public slot:
        void change(int comboboxindex);
    // ...
    connect(comboBox, SIGNAL(activated(int)), this, SLOT(change(int)));
    // ...
    void Dings::change(int comboboxindex)
    {
       double value= doubleSpinBox->value();
    // ...
    


  • danke endlich hab ichs gelöst


Anmelden zum Antworten