Seite 1 von 1

QDockWidget (Tabify)

Verfasst: 4. August 2008 14:49
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

Verfasst: 11. August 2008 10:02
von upsala
Schon mal versucht den Focus auf das DockWidget zu setzen?

Verfasst: 12. August 2008 21:24
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.

Verfasst: 13. August 2008 09:01
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...