QDockWidget (Tabify)

Alles rund um die Programmierung mit Qt
Antworten
Antis_81
Beiträge: 12
Registriert: 24. Mai 2007 13:19

QDockWidget (Tabify)

Beitrag von Antis_81 »

Hallo,
kann mir Jemand bei folgendem Problem behilflich sein:

Ich arbeite mit tabbed Dockwidgets und es funktioniert soweit auch wunderbar. Alles, was ich noch will, ist programmatisch das erste hinzugefügte Tab zu aktivieren.

Per default wird momentan immer das zuletzt hinzugefügte aktiviert.

Beispiel:

QDockWidget *tab1 = new QDockWidget();
QMainwindow::addWidget(tab1, "ERSTES TAB");

QDockwidget *tab2 = new QDockWidget();
QMainwindow::addWidget(tab1, "LETZTES TAB");

QMainWindow::tabifyDockWidget(tab1, tab2);

// Jetzt müsste noch sowas wie "tab1->activateWindow();" kommen, funzt aber so nicht.


Allgemeiner Tip:
Das vorherige "addWidget(...);" verhindert übrigens, dass die DockWidgets übereinander gezeichnet werden.


Gruß
Nils
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Schon mal versucht den Focus auf das DockWidget zu setzen?
Antis_81
Beiträge: 12
Registriert: 24. Mai 2007 13:19

Beitrag von Antis_81 »

Ja, schon versucht. Danke trotzdem.

Was evtl. noch erwähnenswert ist:
Die Dockwidgets werden im Constructor des Hauptfensters (unsichtbar) erstellt, weshalb ich dort leider kein show() aufrufen kann - Das knallt. Im Moment habe ich auch keine Idee, es später aufzurufen.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Das show() könnte man im showEvent oder event von QMainwindow aufrufen.

Beispiel

Code: Alles auswählen

bool CMainWindow::event(QEvent* apEvent)
{
    switch (apEvent->type())
    {
        case QEvent::Show:
            if (mPolished == false)  // globaler Merker damit es nur einmal ausgeführt wird.
            {
                mPolished = true;
                tab1->close();
                tab2->close();
                tab1->show();
                tab2->show();
            }
            break;

            default:
                // weiteres...
    }
    return QMainWindow::event(apEvent);    
}
In meiner Anwendung funktioniert es auf diese art und weise...
Antworten