2017-06-02 3 views
0

Es gibt mein Problem, ich möchte neues Unterfenster in der MDIArea des aktiven Tab von Tabwidget zu implementieren. Aber die einzigen Dinge, die du heute tun kannst, ist das Hinzufügen eines Widgets in der letzten erstellten Registerkarte/mdiArea (mein Code unten).Dynamische Implementierung von QMdiSubWindow in QMdiArea in Qtabwidget

Wie kann ich dynamisch wechseln (ohne jede mdiArea unabhängig zu deklarieren) und die mdiArea des aktuellen Tabwidgets füllen?

P. S: Ich habe zu ersetzen versucht:

zoneCentrale->addSubWindow(subwindow) 

von

ui->tabWidget->currentWidget()->addSubWindow(subwindow) 

ohne Erfolg.

void MainWindow::settingsAddLayout_triggered() 
{ 
    zoneCentrale = new QMdiArea; 
    ui->tabWidget->addTab(zoneCentrale,"new"); 
} 
void MainWindow::settingsEditLayout_triggered() 
{ 
    testwidget *subwindow = new testwidget; 

    QMdiSubWindow *uneSousFenetre = zoneCentrale->addSubWindow(subwindow); 
    uneSousFenetre->setWindowFlags(Qt::FramelessWindowHint); 
    uneSousFenetre->resize(200,200); 
    subwindow->show(); 
} 

Antwort

0

Ich komme mit einer Lösung des Problems zurück. Ich habe erklärt, haben Sie eine QList mdiAreas vorschlagen; Danach verwende ich meine QList parallel zum Tabwidget.

Hinzufügen:

Area = new QMdiArea; 
mdiAreas.append(Area); 
ui->tabWidget->addTab(Area,"new"); 
int lastindex = ui->tabWidget->count()-1; 
ui->tabWidget->setCurrentIndex(lastindex); 
actualMonitorIndex = lastindex; 

Edit:

testwidget *instru= new testwidget; 
QMdiSubWindow *instru; 
subwindow = mdiAreas[actualMonitorIndex]->addSubWindow(instru); 
instru->show(); 

Vielen Dank für Ihre Hilfe, und ich hüpfen, wird dies jemand anderes helfen.

Verwandte Themen