C++ 在qt中动态添加小部件

C++ 在qt中动态添加小部件,c++,qt,C++,Qt,我在将小部件添加到QMainWindow时遇到了一个小问题。 当我这样做的时候: wsk_mainStatki = new mainStatki(this); wsk_mainStatki ->setGeometry(0,0,400,300); this->layout()->addWidget(wsk_mainStatki); 没关系,但我得到警告: QMainWindowLayout::addItem:请改用公共QMainWindow API 这是我的游戏课 #i

我在将小部件添加到QMainWindow时遇到了一个小问题。 当我这样做的时候:

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
梅斯特塔基头球

#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
\ifndef MAINSTATKI\u H
#定义主干
#包括
#包括“ui_mainStatki.h”
类mainStatki:publicqwidget,publicui::mainStatki
{
Q_对象
公众:
mainStatki(QWidget*母公司);
};
#endif//MAINSTATKI_H

它应该是什么样子

我相信这意味着您不需要手动将内容插入QMainWindow的布局,而是使用addToolBar、setStatusBar或setCentralWidget等方法。您自己的小部件的布局将在centralWidget中进行

顺便说一下,您的mainStatki构造函数缺少对QWidget构造函数的调用。除非您有充分的理由不这样做,否则您的构造函数应该如下所示:

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