2010-11-14 116 views
4

將小部件添加到QMainWindow中有一個小問題。 當我那樣做:在qt中動態添加小部件

wsk_mainStatki = new mainStatki(this); 
wsk_mainStatki ->setGeometry(0,0,400,300); 
this->layout()->addWidget(wsk_mainStatki); 

這是確定,但我得到警告:

QMainWindowLayout ::的addItem:請使用公共QMainWindow的API,而不是

這是我的遊戲類

#include "game.h" 

    game::game() 
    { 
     setGeometry(200, 200, 400, 300); 
     setWindowTitle("Statki"); 
     wsk_mainStatki = new mainStatki(this); 
     wsk_mainStatki ->setGeometry(0,0,400,300); 
     this->layout()->addWidget(wsk_mainStatki); 
    } 

遊戲標題

#ifndef WIDGET1_H 
#define WIDGET1_H 
#include "k_plansza.h" 
#include "mainStatki.h" 
#include "settings.h" 
#include <QApplication> 
#include <QMainWindow> 

class game : public QMainWindow 
{ 
    public: 
     game(); 
     ~game() {}; 
    private: 
     mainStatki *wsk_mainStatki; 
     settings *wsk_settings; 
}; 

#endif // WIDGET1_H 

mainstatki類

#include "mainstatki.h" 

mainStatki::mainStatki(QWidget *parent){ 
    setupUi(this); 
    connect(closeButton, SIGNAL(clicked()), parent, SLOT(close())); 
} 

mainstatki頭

#ifndef MAINSTATKI_H 
#define MAINSTATKI_H 

#include <QWidget> 
#include "ui_mainStatki.h" 

class mainStatki : public QWidget, public Ui::mainStatki 
{ 
    Q_OBJECT 
public: 
    mainStatki(QWidget *parent); 

}; 

#endif // MAINSTATKI_H 

應該怎麼看?

回答

10

我相信這意味着您不需要手動將東西插入到QMainWindow的佈局中,而是使用像addToolBar,setStatusBar或setCentralWidget這樣的方法。您自己的小部件的佈局將發生在中央部件中。

順便說一下,您的mainStatki構造函數缺少對QWidget構造函數的調用。除非你有充分的理由不這樣做,否則你的構造者應該看起來像這樣:

mainStatki::mainStatki(QWidget *parent) 
    : QWidget(parent) 
{ 
    setupUi(this); 
    connect(closeButton, SIGNAL(clicked()), parent, SLOT(close())); 
}