Как отобразить виджет внутри главного окна - PullRequest
5 голосов
/ 18 сентября 2011

У меня есть проект морской пехоты, и у меня есть следующая структура файлов.

marines.pro

FORMS

iran.ui marines.h

Заголовки

iran.h marines.h

Источники

iran.cpp main.cpp marines.cpp

Я добавил виджет iran в проект морских пехотинцев.

Вот marines.cpp

#include <QtGui>
#include "marines.h"
#include "iran.h"


marines::marines(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::marines)
{
    ui->setupUi(this);
    connect(ui->actionExit, SIGNAL(triggered()), this, SLOT(close()));
    connect(ui->actionIran, SIGNAL(triggered()), this, SLOT(ir()));
}

void marines::ir()
{
//slot to display iran ui inside my main window
}

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

, а вот мой iran.cpp

#include "iran.h"
#include <QtGui>

iran::iran(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::iran)
{
    ui->setupUi(this);
}

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

Как мне отобразить виджет, который я сделал в Qt Designer?.

Ответы [ 2 ]

12 голосов
/ 18 сентября 2011

Все зависит от того, как вы хотите, чтобы виджет отображался.

  1. вы можете добавить макет к вашему центральному виджету в вашем MainWindow и добавить свой собственный виджет в макет
  2. , если вы хотите, чтобы ваш собственный виджет был CentralWidget для MainWindow, тогда используйте setCentralWidget
  3. Если вы хотите, чтобы пользовательский виджет был вложенным окном, добавьте MdiArea в главное окно.Затем добавьте пользовательский виджет к вам MdiArea.
  4. Если вы просто хотите, чтобы пользовательский виджет отображался в виде окна, тогда просто "widget.show ()"

Лучше посмотреть Примеры Qt, чтобы понять, как используется MainWindow.

3 голосов
/ 19 сентября 2011
marines::marines(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::marines)
{
    ui->setupUi(this); // after this
    iran *ir = new iran(); // create variable ir
    ir->show(); // show window
    ...
}
...