2

我在将一些组件从代码设置为使用 qt creator 创建的布局时遇到问题我正在尝试添加组件,当我运行我的窗口时,组件没有显示在这里是一些代码 SlotPLayerWidget 是我创建的一个小部件使用 qt 创建者

'#include "joinwidget.h"
#include "ui_joinwidget.h"
#include "ui/joingameteamselectionwidget.h"
#include <QDebug>
JoinWidget::JoinWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::JoinWidget)
{
    ui->setupUi(this);
    this->createPlayersSlots(8);
}

JoinWidget::~JoinWidget()
{
    delete ui;
}

void JoinWidget::on_exitButton_clicked()
{
    exit(0);
}

void JoinWidget::on_startGameButton_clicked()
{
    //start game
}

void JoinWidget::on_mainMenuButton_clicked()
{
    emit mainMenuButtonClicked();
}

void JoinWidget::setPlayerName(QString playerName){
    this->playerName_ = playerName;
}

void JoinWidget::createPlayersSlots(int numberOfPlayers){

    for(int i = 0;i< numberOfPlayers; i++){
        SlotPlayerWidget widget;
        ui->slotPlayersVerticalLayout->addWidget(&widget);
    }

}'
4

1 回答 1

0

您在堆栈中分配小部件,createPlayersSlots这将在您可以对它们执行任何操作之前销毁小部件,以解决此问题,将小部件分配在堆上。

LE:作为一个规则,Qt 总是在堆上分配子小部件(这很容易,因为您不必跟踪每一块内存,当它被删除时父级将删除它们)和顶级小部件(小部件没有父级,即应用程序的“主窗口”)您可以在堆栈上分配。

于 2013-09-01T16:20:58.773 回答