[C++,Qt] SIGNAL bei auswahl eines Tabs

SuperSonik

Erfahrenes Mitglied
Hi Leute,
ich würde gerne einen SLOT einer meiner Klassen mit einem entsprechenden
SIGNAL eines QTabWidget verbinden.
Das SIGNAL sollte irgendwas sein wie "wenn Tab XY ausgewählt wird".
Ich finde jedoch kein entsprechendes SIGNAL. QTabWidget hat selber laut Doku
currentChanged ( int index ) , aber wenn ich das connecte mit der Angabe des entsprechenden Index passiert nix. :-((
Auch die von QObject und QWidget geerbten SIGNALs helfen nicht weiter.
Kann mir jemand sagen wie das funktioniert, vielleicht mit einem kleinen Beispiel oder so.
Ach ja, ich benutze Qt 4.2.2 unter Windows , Open Source Version mit MinGW.
Gruß,

SuperSonik
 
Hallo,

schau doch mal:

C++:
#include <QtGui/QMainWindow>
#include <QtGui/QApplication>
#include <QtGui/QTabWidget>
#include <QtGui/QTextEdit>
#include <QtGui/QStatusBar>
#include <QtGui/QTableWidget>

class MainWindow : public QMainWindow
{
    Q_OBJECT

    private:
        QTabWidget* tab_widget;
        QStatusBar* status;

    public:
        MainWindow() {
            tab_widget = new QTabWidget();
            tab_widget->addTab(new QTextEdit("Dummy Text for editor"),
                               "Text Editor Widget");
            tab_widget->addTab(new QTableWidget(3,3),
                               "Table Widget");
            QObject::connect(tab_widget,
                             SIGNAL(currentChanged(int)),
                             this,
                             SLOT(tabChanged(int)));


            status = new QStatusBar();
            status->showMessage("Current active tab: " + tab_widget->tabText(0));

            setCentralWidget(tab_widget);
            setStatusBar(status);

            setWindowTitle("QTabWidget Example");
        }

    public slots:
        void tabChanged(int index) {
            QString message = QString("Current active tab: ") +
                              tab_widget->tabText(index);
            status->showMessage(message);
        }
};

int main(int argc, char** argv) {
    QApplication app(argc, argv);
    MainWindow win;
    win.show();
    return app.exec();
}

Gruß,
RedWing
 
Hi,
vielen Dank. Ich hatte vergessen beim connect das int zu übergeben.
Hätte mir auch mal auffallen können.
Gruß,
SuperSonik
 
Zurück