在qt中动态添加小部件
问题描述:
将小部件添加到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
应该怎么看?
答
我相信这意味着您不需要手动将东西插入到QMainWindow的布局中,而是使用像addToolBar,setStatusBar或setCentralWidget这样的方法。您自己的小部件的布局将发生在*部件中。
顺便说一下,您的mainStatki构造函数缺少对QWidget构造函数的调用。除非你有充分的理由不这样做,否则你的构造者应该看起来像这样:
mainStatki::mainStatki(QWidget *parent)
: QWidget(parent)
{
setupUi(this);
connect(closeButton, SIGNAL(clicked()), parent, SLOT(close()));
}