在qt中动态添加widget [英] adding widget dynamically in qt

查看:3714
本文介绍了在qt中动态添加widget的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个小问题添加小部件到QMainWindow。
当我这样做:

I have a small problem with adding widget to QMainWindow. When i do it like that:

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

没关系,但会收到警告:

it's ok but i get warning:


QMainWindowLayout :: addItem:请使用公开的QMainWindow API

QMainWindowLayout::addItem: Please use the public QMainWindow API instead

这是我的游戏类



this is my game class

    #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类

mainstatki class

#include "mainstatki.h"

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

mainstatki标题

mainstatki header

#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。您自己的窗口小部件的布局将发生在centralWidget。

I believe it means you are not expected to manually insert stuff into the layout of a QMainWindow, but instead use methods like addToolBar, setStatusBar or setCentralWidget. The layouting of your own widgets would happen in the centralWidget.

顺便说一下,您的mainStatki构造函数缺少对QWidget构造函数的调用。除非你有一个很好的理由不这样做,你的构造函数应该看起来像这样:

By the way, your mainStatki constructor is missing a call to the QWidget constructor. Unless you have a good reason not to do it, your constructor should rather look like this:

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

这篇关于在qt中动态添加widget的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆