Zugriff auf Button QT-Designer



  • Hast du den Link?



  • Hier ist die Dokumentation:

    http://doc.qt.nokia.com/

    Hier ein paar Tutorials (Dort findest du deine Antwort):

    http://doc.qt.nokia.com/4.7/tutorials.html

    Direkter Links habe ich jetzt nicht griffbereit.

    Edit: Um genauer zu werden interessiert dich das Signal/Slot-Verfahren der QT.



  • Finde leider ncihts passendes.
    gehen wir davon aus, das es B1 und B2 gibt.
    Wenn ich B1 klicke soll B2 deaktiviert werden.
    Wie würde hierfür zum BEispiel der Code lauten?



  • Das Adressbook-Beispiel hat haargenau diese Funktionalität aber egal es geht ungefähr so (ka wie dein Code ist):

    connect(b1, SIGNAL(clicked()), this, SLOT(hideb2()));
    
    void deineKlasse::hideb2()
    {
      b2->hide();
    }
    

    Unter der Annahme b1 und b2 sind von dir erstellte Buttons und deineKlasse hat von QWidget geerbt. Connect gehört in die initialisierung.

    Siehe hier: http://doc.qt.nokia.com/4.7/tutorials-addressbook-part2.html

    PS: Du bist hier im falschen Forum. Für Fragen zu QT gibt es ein anderes.



  • Verstehe ich nicht ganz er sagt bei mir im Code es ist ein Zeiigertyp nötig.



  • Waterman83 schrieb:

    Verstehe ich nicht ganz er sagt bei mir im Code es ist ein Zeiigertyp nötig.

    Dann musst du ein funktionierenden Code zeigen, der den Fehler reproduziert. ist hideb2 ein public slots:?



  • Waterman83 schrieb:

    Verstehe ich nicht ganz er sagt bei mir im Code es ist ein Zeiigertyp nötig.

    Beschäftige dich bitte mal mit den C++ Grundlagen, schau dir danach die QT-Tutorials an, und stell dann bitte Fragen. QT, oder überhaupt ein x-beliebiges UI-Framework macht unter C++ nur Sinn, wenn man a) die Grundlagen der Sprache beherrscht und b) auch bereit ist, zumindest eine gewisse Recherche selbstständig zu tun.

    Deine Frage jedenfalls deutet an, das du weder a noch b erfüllst (Und versteh mich nicht falsch: Ich habe nichts gegen Fragen - aber ich habe etwas gegen Fragen die definitiv nicht zum Schwierigkeitsgrad der Aufgabenstellung passen).



  • So ungefähr als Beispiel total aus dem Tutorial entnommen ungeprüft da keine compiler atm:

    //myclass.cpp
    #include <QtGui>
    #include "myclass.h"
    
    MyClass::MyClass(QWidget *parent)
         : QWidget(parent)
     {
    	 //sonstiges etc...
    
         b1 = new QPushButton(tr("&b1"));
         b1->show();
    
    	 b2 = new QPushButton(tr("&b2"));
         b2->show();
    
         connect(b1, SIGNAL(clicked()), this, SLOT(hideb2()));
    
    	 //layout sonstiges etc...
    }
    
    void MyClass::hideb2()
    {
    	b2->hide();
    }
    
    //myclass.h
    #ifndef MYCLASS_H
    #define MYCLASS_H
    
    #include <QWidget>
    
    class QLabel;
    class QLineEdit;
    class QPushButton;
    class QTextEdit;
    
    class MyClass : public QWidget
    {
     Q_OBJECT
    
    public:
     AddressBook(QWidget *parent = 0);
    
    public slots:
     void hideb2();
    
    private:
     QPushButton *b1;
     QPushButton *b2;
    };
    
    #endif
    
    //main.cpp
    #include <QtGui>
    #include "myclass.h"
    
    int main(int argc, char *argv[])
    {
     QApplication app(argc, argv);
    
     MyClass myclass;
     myclass.show();
    
     return app.exec();
    }
    


  • Der Weg ohne Designer:

    #include <QtGui/QApplication>
    #include <QtGui>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QWidget w;
        QHBoxLayout * hbl = new QHBoxLayout(&w);
        QPushButton * abut   = new QPushButton("Butt &A");
        abut->setCheckable(true);
        abut->setChecked(true);
        QPushButton * bbut   = new QPushButton("Butt &B");
        hbl->addWidget(abut);
        hbl->addWidget(bbut);
    
        QWidget::connect(abut,SIGNAL(clicked(bool)),bbut,SLOT(setEnabled(bool)));
        w.show();
        return a.exec();
    }
    

    Der Weg mit Designer:
    Click deine GUI zusammen (QWidget als Basis, 2 Buttons, HLayout).
    Wähle ersten Button an, gehe in die Eigenschaften des QAbstractButtons und setze Haken bei "checkable" und "checked"
    Unter dem Widgetzusammenklickwindow ist der Aktionseditor && Signale/Slots, wähle letzteres.
    Clicke + und trage folgendes ein:

    pushButton clicked(bool) pushButton_2 setEnabled(bool)

    feddich -- aber ob dich das wirklich weiterbringt?

    USR32 schrieb:

    Das ist kein C++0x !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Sehr konstruktiv - dein Beitrag im übrigen auch nicht. Der Titel sagt schon Qt ... das wird ein Mod sicher irgendwann verschieben, auch ohne deine vielen "!" .

    Zum Beispiel nach http://www.c-plusplus.net/forum/f51 oder



  • Das ist kein C++0x !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Anmelden zum Antworten