QT - crear varios Form

 
Vista:

crear varios Form

Publicado por Kiko (1 intervención) el 19/01/2009 18:50:03
Como creo varios Form que cuando oprima un botton se muestre otro form, como hago eso con los signal y los slot en qt designer. alguien sabe como hacerlo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:crear varios Form

Publicado por darkstar (10 intervenciones) el 03/02/2009 18:56:02
Hola, para lograr lo que necesitas, tenes que crear un form (fuese QMainWindow, QWidget, o QDialog), y dentro de ellos tenes que tener los objetos (de los otros formularios) apuntados. Ej:

//cabecera.h
#include <QtGui> //modulo de widgets de Qt

#define MAX_FORMS 10

class Formulario : public QDialog
{
Q_OBJECT
public:
Formulario (QWidget *parent = 0);

private slots:
void clicked(const QString &texto);

private:
QPushButton *botonera[MAX_FORMS];
QDialog *forms[MAX_FORMS];
QSignalMapper *mapper;
QGridLayout *preparaInterface();
};

//cabecera.cpp

Formulario::Formulario(QWidget *parent) : QDialog(parent)
{
setLayout (preparaInterface());
}

QGridLayout * Formulario::preparaInterface()
{
QGridLayout *retLayout = new QGridLayout;
mapper = new QSignalMapper(this);

for(int bucle = 0; bucle < MAX_FORMS; bucle++)
{
forms[bucle] = new QDialog();
botonera[bucle] = new QPushButton(tr("Mostrar formulario %1").arg(bucle));
connect(botonera[bucle],SIGNAL(clicked()),mapper,SLOT(map()));
mapper->setMapping(botonera[bucle]->text());
retLayout->addWidget(botonera[bucle], bucle / 3, bucle %3);
}
connect(mapper,SIGNAL(mapped(const QString &)),this,SLOT (clicked(const QString &)));

return retLayout;
}

void Formulario::clicked(const QString &texto)
{
//aca tenemos que mostrar los formularios.
//ej:
int index = texto.remove("Mostrar formulario ",true).toInt(); //solo extraigo el numero
forms[index]->show();
}

Fijate, seguramente tenga aulguna fallas el ejemplo anterior, pero eso es porque te estoy respondiendo desde un cyber y no tengo nada para probar. Pero el codigo es valido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:crear varios Form

Publicado por Humberto (8 intervenciones) el 22/06/2009 07:37:01
hola disculpa que pregunte de nuevo aqui pero estoy con qtcreator y necesito exactamente esto que dices pero la verdad es que apenas empiezo a programar con c++, no me podrias explicar esto mismo pero con el ide de qtcreator? es que ya defini las cabeceras y todo pero cuando le doy la orden de que me muestre el formulario me da este error " no se puede llamar a la función miembro ‘void QWidget::show()’ sin un objeto" me podrias auxiliar?
********************************************************************************************************************************
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "form3.h"


MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);

}

MainWindow::~MainWindow()
{
delete ui;
}
int MainWindow::nueva()
{

Form3::show(); // ***************** aqui es el problema ***************


return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar