Estoy intentando crear diseños dinámicamente en mi clase MainWindow. Tengo cuatro marcos que se colocan con un objeto de disposición de cuadrícula. Cada cuadro contiene un ClockWidget personalizado. Quiero que los objetos ClockWidget cambien de tamaño según corresponda cuando cambie el tamaño de la ventana principal, por lo que debo agregarlos a un diseño. Sin embargo, tengo que hacer esto en tiempo de ejecución, ya que el objeto en sí se crea en tiempo de ejecución. Traté de lograr esto programáticamente, pero el código comentado a continuación que intenta crear un nuevo diseño hace que el programa falle. ¿Cuál es el procedimiento para hacer esto correctamente?Qt Crear diseños y agregar widgets a diseños dinámicamente
Archivo de cabecera:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "ClockView.h"
namespace Ui{
class MainWindow;
}
class QLayout;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void populateViewGrid();
private:
Ui::MainWindow *ui;
ClockView *clockView_1;
ClockView *clockView_2;
ClockView *clockView_3;
ClockView *clockView_4;
QLayout *layout_1;
QLayout *layout_2;
QLayout *layout_3;
QLayout *layout_4;
};
#endif // MAINWINDOW_H
archivo de implementación:
#include <QVBoxLayout>
#include "MainWindow.h"
#include "ui_MainWindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
populateViewGrid();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::populateViewGrid()
{
clockView_1 = new ClockView(ui->frame_1);
clockView_2 = new ClockView(ui->frame_2);
clockView_3 = new ClockView(ui->frame_3);
clockView_4 = new ClockView(ui->frame_4);
/*
layout_1 = new QVBoxLayout;
layout_2 = new QVBoxLayout;
layout_3 = new QVBoxLayout;
layout_4 = new QVBoxLayout;
layout1->addWidget(clockView_1);
layout2->addWidget(clockView_2);
layout3->addWidget(clockView_3);
layout4->addWidget(clockView_4);
ui->frame_1->setLayout(layout_1);
ui->frame_2->setLayout(layout_2);
ui->frame_3->setLayout(layout_3);
ui->frame_3->setLayout(layout_4);
*/
}
¿Hay alguna información útil en el bloqueo? ¿Has intentado configurar el padre de cada diseño durante el inicio: 'new QVBoxLayout (frame_1)', en lugar de las llamadas 'setLayout()'? – jdi