QT - No doy con lo del dialog

 
Vista:

No doy con lo del dialog

Publicado por Adrian (12 intervenciones) el 20/03/2010 06:17:22
Hola william, soy adrian, pusiste tu correo en LWP.
Mi duda es la siguiente, estoy empezando con QT, el Dessigner, en linux, y no doy como mostrar un form a traves de una QAction de un QMenu.

Te paso los codigos

--------------------------------------------- MainWindow.h ------------------------------------------------

#ifndef MAINWINDOWIMPL_H

#define MAINWINDOWIMPL_H

//

#include <QMainWindow>

#include "ui_mainwindow.h"

//

class MainWindowImpl : public QMainWindow, public Ui::MainWindow

{

Q_OBJECT

public:

MainWindowImpl( QWidget * parent = 0, Qt::WFlags f = 0 );

private slots:

};

#endif

--------------------------------------------------------------- MainWindow.cpp ------------------------------------------------

#include <QtGui>

#include "mainwindowimpl.h"

#include "altas.h"

//

MainWindowImpl::MainWindowImpl( QWidget * parent, Qt::WFlags f)

: QMainWindow(parent, f)

{

setupUi(this);

connect(actionCerrar,SIGNAL(triggered()),this,SLOT(close()));

}

------------------------------------------------------------------- altas.h ----------------------------------------------------------------------


#ifndef __ALTAS_H__

#define __ALTAS_H__

#include <QDialog>

#include "ui_altas.h"

class FormAltas : public QDialog, public Ui::FORMALTAS

{

Q_OBJECT

public:

FormAltas(QWidget *parent=0);

};

---------------------------------------------------------------------------- altas.cpp --------------------------------------------------------------------

#include <QtGui>

#include "altas.h"

FormAltas::FormAltas( QWidget * parent)

: QDialog(parent)

{

setupUi(this);

}

--------------------------------------------------------------------------- main.cpp --------------------------------------------------------------------------


#include <QApplication>

#include "mainwindowimpl.h"

#include "altas.h"

//

int main(int argc, char ** argv)

{

QApplication app( argc, argv );

MainWindowImpl win;

win.show();

app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );

return app.exec();

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Como veras estoy empezando, pero no consigo sacar el dialog de altas a partir del mainwindow, donde coloco el connect para mostrar el dialog y empezar a guardar datos, una vez sepa esto lo demas supongo que sera coser y cantar.

Gracias

Adrian
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:No doy con lo del dialog

Publicado por william (27 intervenciones) el 20/03/2010 13:37:40
correo: [email protected] |
______________________________|

Hola, falta el archivo "ui_mainwindow.h"
En ese archivo es que se coloca el "conncect"

Recomiendo que utilices QTCreator.

Aca está el codigo fuente de un programa que tiene un menú para abrir un formulario y un botón que también abre un formulario:

*****************************************
******ARCHIVO ui_mainwindow.h******
*****************************************


#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QStatusBar>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
QAction *actionAbrirForm2;
QWidget *centralWidget;
QPushButton *pushButton;
QMenuBar *menuBar;
QMenu *menuArchivo;
QToolBar *mainToolBar;
QStatusBar *statusBar;

void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(600, 400);
actionAbrirForm2 = new QAction(MainWindow);
actionAbrirForm2->setObjectName(QString::fromUtf8("actionAbrirForm2"));
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
pushButton = new QPushButton(centralWidget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(180, 120, 161, 27));
MainWindow->setCentralWidget(centralWidget);
menuBar = new QMenuBar(MainWindow);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 600, 25));
menuArchivo = new QMenu(menuBar);
menuArchivo->setObjectName(QString::fromUtf8("menuArchivo"));
MainWindow->setMenuBar(menuBar);
mainToolBar = new QToolBar(MainWindow);
mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);
statusBar = new QStatusBar(MainWindow);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
MainWindow->setStatusBar(statusBar);

menuBar->addAction(menuArchivo->menuAction());
menuArchivo->addSeparator();
menuArchivo->addAction(actionAbrirForm2);

retranslateUi(MainWindow);
QObject::connect(actionAbrirForm2, SIGNAL(triggered()), MainWindow, SLOT(abrirFormulario2()));
QObject::connect(pushButton, SIGNAL(clicked()), MainWindow, SLOT(abrirFormulario2()));

QMetaObject::connectSlotsByName(MainWindow);
} // setupUi

void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
actionAbrirForm2->setText(QApplication::translate("MainWindow", "AbrirForm2", 0, QApplication::UnicodeUTF8));
pushButton->setText(QApplication::translate("MainWindow", "Abrir formulario 2", 0, QApplication::UnicodeUTF8));
menuArchivo->setTitle(QApplication::translate("MainWindow", "ABRIR", 0, QApplication::UnicodeUTF8));
} // retranslateUi

};

namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H


*************************************
*****ARCHIVO ui_formulario2.h****
*************************************

/********************************************************************************
** Form generated from reading ui file 'formulario2.ui'
**
** Created: Sat Mar 20 07:27:13 2010
** by: Qt User Interface Compiler version 4.5.2
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef UI_FORMULARIO2_H
#define UI_FORMULARIO2_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Formulario2
{
public:
QWidget *centralwidget;
QLabel *label;
QMenuBar *menubar;
QStatusBar *statusbar;

void setupUi(QMainWindow *Formulario2)
{
if (Formulario2->objectName().isEmpty())
Formulario2->setObjectName(QString::fromUtf8("Formulario2"));
Formulario2->resize(800, 600);
centralwidget = new QWidget(Formulario2);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
label = new QLabel(centralwidget);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(180, 130, 121, 17));
Formulario2->setCentralWidget(centralwidget);
menubar = new QMenuBar(Formulario2);
menubar->setObjectName(QString::fromUtf8("menubar"));
menubar->setGeometry(QRect(0, 0, 800, 25));
Formulario2->setMenuBar(menubar);
statusbar = new QStatusBar(Formulario2);
statusbar->setObjectName(QString::fromUtf8("statusbar"));
Formulario2->setStatusBar(statusbar);

retranslateUi(Formulario2);

QMetaObject::connectSlotsByName(Formulario2);
} // setupUi

void retranslateUi(QMainWindow *Formulario2)
{
Formulario2->setWindowTitle(QApplication::translate("Formulario2", "MainWindow", 0, QApplication::UnicodeUTF8));
label->setText(QApplication::translate("Formulario2", "Hola formulario 2", 0, QApplication::UnicodeUTF8));
Q_UNUSED(Formulario2);
} // retranslateUi

};

namespace Ui {
class Formulario2: public Ui_Formulario2 {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_FORMULARIO2_H


***********************************
*****ARCHVIO mainwindow.h****
***********************************

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();

protected:
void changeEvent(QEvent *e);

private:
Ui::MainWindow *ui;
public slots:
void abrirFormulario2();
};

#endif // MAINWINDOW_H

*********************************
****ARCHIVO formulario2.h****
*********************************

#ifndef FORMULARIO2_H
#define FORMULARIO2_H

#include <QMainWindow>

namespace Ui {
class Formulario2;
}

class Formulario2 : public QMainWindow {
Q_OBJECT
public:
Formulario2(QWidget *parent = 0);
~Formulario2();

protected:
void changeEvent(QEvent *e);

private:
Ui::Formulario2 *ui;
};

#endif // FORMULARIO2_H

******************************
*********formulario2.cpp****
*****************************

#include "formulario2.h"
#include "ui_formulario2.h"

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

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

void Formulario2::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}

*****************************************
**********ARCHIVO mainwindow.cpp***
*****************************************

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "formulario2.h"

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

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

void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}

void MainWindow::abrirFormulario2(){
Formulario2 *formulario2=new Formulario2();
formulario2->show();

}

**********************************
*******ARCHIVO main.cpp*******
***********************************

#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

*************************************
******ARCHIVO altas.pro************
*************************************

# -------------------------------------------------
# Project created by QtCreator 2010-03-20T07:13:40
# -------------------------------------------------
TARGET = altas
TEMPLATE = app
SOURCES += main.cpp \
mainwindow.cpp \
formulario2.cpp
HEADERS += mainwindow.h \
formulario2.h \
ui_formulario2.h \
ui_mainwindow.h
FORMS += mainwindow.ui \
formulario2.ui
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:No doy con lo del dialog[VideoTutorial]

Publicado por william (27 intervenciones) el 20/03/2010 16:00:45
correo: [email protected] |
______________________________|

subí un video en youtube para el manejo de signal-slots

http://www.youtube.com/watch?v=XqaUEHRs-F0
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:No doy con lo del dialog

Publicado por Adrian (12 intervenciones) el 20/03/2010 22:40:37
Tio muchas gracias, no conseguia hacerlo, aunque la version win varia de la de linux.
Hay que modificar algunas cosas
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:No doy con lo del dialog

Publicado por william (27 intervenciones) el 21/03/2010 03:30:10
correo: [email protected] |
_______________________|


No hay problema.

Pero lo he probado en qt creator para winXP y me ha funcionado bien... ¿que cosa le tocó cambiar? (solo por curiosidad)
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