elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error aplicacion Qt4
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Error aplicacion Qt4  (Leído 5,402 veces)
El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Error aplicacion Qt4
« en: 19 Marzo 2011, 18:53 pm »

Hola, estoy aprendiendo a usar la libreria Qt, y estoy haciendo por mi mismo un ejemplo que aparece en un tutorial pdf que estoy siguiendo, pero cuando intento ejecutarlo me da multiples errores como estos:
  • multiple definition of `Dialogo::Dialogo(QWidget*)'  (y ~Dialogo)
  • undefined reference to `vtable for Dialogo' (y ~Dialogo)

Otros programas en Qt no me han dado ningun tipo de problema, aqui os pongo el codigo( SI, es un tochazo, pero espero que hagais un esfuerzo en ayudarme) :P

dialogo.h
Código:
#ifndef DIALOGO_H
#define DIALOGO_H

#include <QDialog>

class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;

class Dialogo : public QDialog{
    Q_OBJECT //Siempre necesario para declarar SIGNALS AND SLOTS

    public:
        Dialogo(QWidget *parent = 0);
        ~Dialogo();

    signals:
        void findNext(const QString &str, Qt::CaseSensitivity cs);
        void findPrevious(const QString &str, Qt::CaseSensitivity cs);

    private slots:
        void findClicked();
        void enableFindButton(const QString &text);

    private:
        QLabel *label;
        QLineEdit *lineEdit;
        QCheckBox *caseCheckBox;
        QCheckBox *backwardCheckBox;
        QPushButton *findButton;
        QPushButton *closeButton;
};

#endif // DIALOGO_H




Dialogo.cpp
Código:
#include <QtGui>
#include "dialogo.h"

Dialogo::Dialogo(QWidget *parent) : QDialog(parent){
    label = new QLabel(tr("Find &what:"));
    lineEdit = new QLineEdit;
    label->setBuddy(lineEdit);

    caseCheckBox = new QCheckBox(tr("Match &case"));
    backwardCheckBox = new QCheckBox(tr("Search &backward"));

    findButton = new QPushButton(tr("&Find"));
    findButton->setDefault(true);
    findButton->setEnabled(false);

    closeButton = new QPushButton(tr("Close"));

    connect(lineEdit, SIGNAL(textChanged(const QString &)),
            this, SLOT(enableFindButton(const QString &)));
    connect(findButton, SIGNAL(clicked()),
            this, SLOT(findClicked()));
    connect(closeButton, SIGNAL(clicked()),
            this, SLOT(close()));

    QHBoxLayout *topLeftLayout = new QHBoxLayout;
    topLeftLayout->addWidget(label);
    topLeftLayout->addWidget(lineEdit);

    QVBoxLayout *leftLayout = new QVBoxLayout;
    leftLayout->addLayout(topLeftLayout);
    leftLayout->addWidget(caseCheckBox);
    leftLayout->addWidget(backwardCheckBox);

    QVBoxLayout *rightLayout = new QVBoxLayout;
    rightLayout->addWidget(findButton);
    rightLayout->addWidget(closeButton);
    rightLayout->addStretch();

    QHBoxLayout *mainLayout = new QHBoxLayout;
    mainLayout->addLayout(leftLayout);
    mainLayout->addLayout(rightLayout);
    setLayout(mainLayout);

    setWindowTitle(tr("Find"));
    setFixedHeight(sizeHint().height());
}

Dialogo::~Dialogo(){
    delete this;
}

void Dialogo::findClicked(){
    QString text = lineEdit->text();
    Qt::CaseSensitivity cs =
            caseCheckBox->isChecked() ? Qt::CaseSensitive
                                      : Qt::CaseInsensitive;
    if (backwardCheckBox->isChecked()){
        emit findPrevious(text,cs);
    }
    else {
        emit findNext(text, cs);
    }
}

void Dialogo::enableFindButton(const QString &text){
    findButton->setEnabled(!text.isEmpty());
}



 
main.cpp
Código:
#include <QApplication>

#include "dialogo.h"
#include "dialogo.cpp" /*Este paso no aparece en el ejemplo del tutorial, pero crei que solucionaria el error */

int main(int argc, char *argv[]){
    QApplication app(argc, argv);
    Dialogo *dialogo = new Dialogo;
    dialogo->show();
    return app.exec();
}



En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Error aplicacion Qt4
« Respuesta #1 en: 19 Marzo 2011, 19:06 pm »

A mi me compila y me funciona bien quitando el #include "Dialogo.cpp".

Saludos


En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: Error aplicacion Qt4
« Respuesta #2 en: 19 Marzo 2011, 19:18 pm »

Gracias por la info, yo quitando el #include "dialogo.cpp" me aparece el segundo error todavia :S
debe de ser algo que hice mal al agregar la libreria de qt, pero ya te digo que con otras aplicaciones si me funciona...
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Error aplicacion Qt4
« Respuesta #3 en: 19 Marzo 2011, 19:24 pm »

¿Usas el QtCreator? Crea un proyecto vacío y añade esos archivos, y pon el mensaje completo que te devuelve el compilador.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: Error aplicacion Qt4
« Respuesta #4 en: 19 Marzo 2011, 19:56 pm »

No, estoy usando el Code::blocks, prefiero hacerlo asi, ya cuando entienda todo perfecto me pasaré a lo "facil".

Aqui está el error que me da:
Citar
                                                               ||=== Temporal, Debug ===|
obj/Debug/dialogo.o||In function `Dialogo':|
/home/java/Workspace code::blocks/Temporal/dialogo.cpp|4|undefined reference to `vtable for Dialogo'|
/home/java/Workspace code::blocks/Temporal/dialogo.cpp|4|undefined reference to `vtable for Dialogo'|
/home/java/Workspace code::blocks/Temporal/dialogo.cpp|4|undefined reference to `vtable for Dialogo'|
/home/java/Workspace code::blocks/Temporal/dialogo.cpp|4|undefined reference to `vtable for Dialogo'|
obj/Debug/dialogo.o||In function `~Dialogo':|
/home/java/Workspace code::blocks/Temporal/dialogo.cpp|48|undefined reference to `vtable for Dialogo'|
obj/Debug/dialogo.o:/home/java/Workspace code::blocks/Temporal/dialogo.cpp|48|more undefined references to `vtable for Dialogo' follow|
obj/Debug/dialogo.o||In function `Dialogo::findClicked()':|
/home/java/Workspace code::blocks/Temporal/dialogo.cpp|58|undefined reference to `Dialogo::findPrevious(QString const&, Qt::CaseSensitivity)'|
/home/java/Workspace code::blocks/Temporal/dialogo.cpp|61|undefined reference to `Dialogo::findNext(QString const&, Qt::CaseSensitivity)'|
obj/Debug/dialogo.o||In function `Dialogo::tr(char const*, char const*)':|
/home/java/Workspace code::blocks/Temporal/dialogo.h|12|undefined reference to `Dialogo::staticMetaObject'|
                                           ||=== Build finished: 9 errors, 0 warnings ===|
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Error aplicacion Qt4
« Respuesta #5 en: 19 Marzo 2011, 22:09 pm »

Buf, pos debe de ser alguna mala configuración o que conmpilaste mal Qt, porque te da un error en un *.o, no en el propio código... Intenta volver a compilarlo bien, o sinó QtCreator.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: Error aplicacion Qt4
« Respuesta #6 en: 19 Marzo 2011, 23:01 pm »

Puf, no sabes lo muchísimo que me costo conseguir que funcionase la libreria Qt  :¬¬
Tu que es lo que usas? por si me pudiese servir de ejemplo o algo...
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Error aplicacion Qt4
« Respuesta #7 en: 19 Marzo 2011, 23:58 pm »

Puf, no sabes lo muchísimo que me costo conseguir que funcionase la libreria Qt  :¬¬
Tu que es lo que usas? por si me pudiese servir de ejemplo o algo...

Yo uso QtCreator, es un gra IDE, y con el Designer y demás herramientas de Qt integradas completamente. Además, lo instalas y lo usas, ya no es necesario compilar las librerías. Antes usaba Visual Studio, pero como tuve ciertos problemas (tenía que recompilar las librerías para cambiar alguna cosa en la configuración) me pasé a QtCreator, ha ido mejorando mucho, es muy bueno.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
paju1986

Desconectado Desconectado

Mensajes: 117


http://www.albertinux.com


Ver Perfil WWW
Re: Error aplicacion Qt4
« Respuesta #8 en: 22 Marzo 2011, 20:33 pm »

ese error es debido a que heredas de una clase que tiene funciones virtuales, tendrias que reimplementar todas las funciones virtuales en la clase hija, por eso en qt se hereda siempre de QObject o de QWidget, pero heredar de QDialog no es una muy buena idea...

SALUDOS
En línea

Hacking, programación, tutoriales, software libre y mucho más en:
http://www.albertinux.com
El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: Error aplicacion Qt4
« Respuesta #9 en: 23 Marzo 2011, 18:14 pm »

Ok! Gracias paju! :D
Entonces si cambiara QDialog por QObject me vale?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error de la aplicacion
Programación Visual Basic
Kizar 2 1,402 Último mensaje 21 Agosto 2005, 01:46 am
por NYlOn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines