Ui-Datei in MainWindow einfügen

Alles rund um die Programmierung mit Qt
Antworten
SeGo
Beiträge: 5
Registriert: 3. April 2011 15:25

Ui-Datei in MainWindow einfügen

Beitrag von SeGo »

Hi,
ich gucke mir zurzeit QT an und bin dabei auf folgendes Problem gestoßen.
Ich habe zwei Ui-Dateien mit den ganzen Klassen zum Ansteuern. Eine ist ein QMainWindow, die andere ein QWidget. Nun möchte ich , dass das QWidget bei einem Knopfdruck in das QMainWindow-Layout eingefügt wird.
So sieht meine mainwindow.cpp jetzt aus:

Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "optionplayerwidget.h"
#include "ui_optionplayerwidget.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    optionpw = new Ui::OptionPlayerWidget();
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_actionPlayer_triggered()
{
   QLayout *layout = ui->centralWidget->layout();
   layout->addWidget(optionpw);
    ui->centralWidget->setLayout(layout);
}
Leider kommt dort immer folgender Fehler:
C:\Users\Sebastian Gottschalk\Test-build-desktop\..\Test\mainwindow.cpp:23: Fehler:no matching function for call to 'QLayout::addWidget(Ui::OptionPlayerWidget*&)'
Gibt es eine Möglichkeit solche Widgets vernünftig einzufügen oder sollte ich die ganze Ui des MainWindows(wird ne Menge) komplett in eine Ui-Datei packen?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Ui-Datei in MainWindow einfügen

Beitrag von franzf »

Ein Ui::OptionPlayerWidget ist kein QWidget, sondern nur die Ui-Klasse, die ein Widget mit dem im Designer erstellten Formular befüllt (setupUi).
Du solltest dann im selben Stil wie dein MainWindow ein eigenes Widget erstellen, dem du dein Ui als Member spendierst und im Konstrukor setupUi() ausführst. Dieses Widget kannst du dann ins Layout deines MainWindows per addWidget() hinzufügen.
Antworten