2013-06-12 3 views
0

У меня есть базовый класс Qt 4, который создает основное диалоговое окно приложения:Как получить из класса Qt MainWindow?

class MainWindow : public QMainWindow { 
    Q_OBJECT 
public: 
    explicit MainWindow(QWidget *parent = 0); 
}; 

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) 
{ 
    QWidget *central = new QWidget; 
    ... 
    setCentralWidget(central); 
} 

Я не должен трогать этот код, но я могу продлить его производный класс:

class MyWindow : public MainWindow { 
    Q_OBJECT 
public: 
    explicit MyWindow(QWidget *parent = 0); 
}; 

MyWindow::MyWindow(QWidget *parent) 
{ 
    MainWindow(parent); 
    QWidget *myWidget = new QWidget; 
    //??? 
} 

Я хотел бы для добавления большего количества виджетов в центральный виджет базового класса. Как я могу это сделать, как только setCentralWidget() уже вызывается в базовом классе?

ответ

2

Вы можете получить доступ к центральному виджету, используя QMainWindow::centralWidget() и добавить в свой макет виджетов или макетов, зная его структуру. Простой пример:

QMainWindow::centralWidget()->layout()->addWidget(new QLabel(tr("New label")));