Добавить компоненты в макет, созданный с помощью QT Creator из кода

У меня проблема с установкой некоторых компонентов из кода в макет, созданный с помощью qt creator. Я пытаюсь добавить компоненты, и когда я запускаю свое окно, компоненты не отображаются, вот какой-то код, SlotPLayerWidget — это виджет, который я также создал используя QT Creator

'#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);
}

}'

2

Решение

Вы размещаете виджеты в стеке в createPlayersSlots и это уничтожит виджеты, прежде чем вы сможете что-либо с ними сделать, чтобы исправить это, выделите виджеты в куче.

LE: Как правило, с помощью Qt всегда размещать дочерние виджеты в куче (это легко, потому что вам не нужно отслеживать каждый фрагмент памяти, родитель удаляет их при удалении) и виджет верхнего уровня (виджет, который не имеет родителя, это «главное окно» вашего приложения), которое вы можете разместить в стеке.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector