Error con Qt.

Iniciado por 0xDani, 5 Julio 2012, 18:28 PM

0 Miembros y 1 Visitante están viendo este tema.

0xDani

A ver si alguien me puede ayudar:
Tengo un codigo bastante simple hecho con Qt y me lanza un error que no se resolver.

Dejo el codigo, el error me lo lanza en la funcion connect, linea 18, me dice: Expected constructor, destructor or type conversion before '(' token.

Código (cpp) [Seleccionar]

#include <QGraphicsView>
#include <QImage>
#include "mainwindow.h"
#include "ui_mainwindow.h"

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

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

QObject::connect (ui->pushButton, SIGNAL(clicked()), this, SLOT(MainWindow::on_pushButton_clicked()));

void MainWindow::on_pushButton_clicked()
{

    QGraphicsScene scene;
    scene.addPixmap(QPixmap("ruta/del/archivo.jpg"));
    QGraphicsView graphicsView(&scene);
    graphicsView.show();
    graphicsView.centerOn(5.6, 4.5);

}



Saludos y gracias de antemano.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

avesudra

#1
No me preguntes el porqué , porque no tengo ni idea, simplemente lo que he hecho es trasladar la línea del error al constructor de MainWindow , que es donde siempre puse las conexiones y todo cuando miré Qt.Queda así y me "funciona" , lo pongo entre comillas porque al pulsar el botón para llamar a la función , aparece una ventana y se cierra inmediatamente:
Código (cpp) [Seleccionar]
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
   connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));
}

De todas maneras el error lo decía , Expected constructor or type conversion before '(' token , o en español , esperado constructor, destructor o un tipo de conversión antes del token '('
PD: No estoy seguro de la traducción mala que he hecho pero bueno , a mi me compila ...
¡Un saludo!
Regístrate en

0xDani

Gracias por la correccion, aun no termina de funcionar, pero por lo menos compila.

Saludos.

PD: Te debo una critica(constructiva), es que he estado muy liado.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

avesudra

Jajajaja no te preocupes por eso , cuando puedas :) , en cuanto al programa tuyo ¿que es lo que debería funcionar?
Regístrate en

0xDani

Pues de momento solo estoy probando a cargar una imagen.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

avesudra

#5
Pues mira  así me han quedado los códigos y a mi me funciona (hacia tiempo que no tocaba Qt, ahora estoy mirando gtk+).Lo único que he hecho ha sido poner dos variables privadas en la clase MainWindow , un QPixmap y un QGraphics scene.Entonces al llegar a la función on_pushbutton_clicked, lo que hacemos es, cargamos en la variable pixmap el archivo desde una ruta ejemplo("C:/users/pictures/miimagen.jpg), después agrego a la variable scene un Qpixmap(al que le habíamos cargado la imagen obviamente),ponemos la variable scene en ui(para referirnos a la interfaz)->graphicsView con la funcion setScene y mostramos el QGraphicsView.Te cuento lo que aprendí en Qt el tiempo que estuve utilizandolo , para referirnos a todo lo que haya en la interfaz gráfica que editamos con ese editor tan bonito usamos el puntero creo que es un puntero, ui, en cuanto pongamos un punto detras de esas dos letras nos aparecerá una lista de los objetos que tenemos en la interfaz gráfica, por ejemplo a nosotros dos nos saldrá uno que se llama pushButton y otro graphicsView , esto digamos que son variables directamente asignadas a la interfaz , por eso cuando creaste la variable QGraphicsView en la función , aunque cargase una imagen no iba a mostrarse nada, bueno ya sabes alguna duda más, por mi parte aquí estoy .He aquí el código :

PD: He de decir que nunca he hecho esto pero bueno leyendo se aprende.
PD2: Lo de centrar la imagen no lo he puesto porque lo he estado tocando y el scroll no se movía pero te lo pongo ahora porque ya se ha movido , es que hay que ponerle valores muy grandes ,por lo menos en el caso de mi imagen. Lo pondriamos así, ¿a que nos referimos? al QGraphicsView de la interfaz entonces ui->graphicsView->centerOn(xxx,xxx)

¡Un saludo crack!

MainWindow.cpp
Código (cpp) [Seleccionar]
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));
}

MainWindow::~MainWindow()
{
   delete ui;

}


void MainWindow::on_pushButton_clicked()
{
   pixmap.load("la ruta del disco duro que quieras siempre separado con esta barra / no con esta \ también puedes hacerlo con un archivo de recursos");
   scene.addPixmap(pixmap);
   ui->graphicsView->setScene(&scene);
   ui->graphicsView->show();
}


MainWindow.h
Código (cpp) [Seleccionar]
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QGraphicsView>
#include <QImage>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
   Q_OBJECT
   
public:
   explicit MainWindow(QWidget *parent = 0);
   ~MainWindow();
   
private slots:
   void on_pushButton_clicked();

private:
   Ui::MainWindow *ui;
   QPixmap pixmap;
   QGraphicsScene scene;
};

#endif // MAINWINDOW_H

Main.cpp
Código (cpp) [Seleccionar]
#include <QtGui/QApplication>
#include "mainwindow.h"

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

0xDani

Lo siento pero sigue sin funcionarme, he creado un archivo de recursos y todavia no carga la imagen, no se que estoy haciendo mal, todavia no se mucho sobre Qt, y voy a seguir intentando resolverlo. Gracias por las respuestas. ;-)
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

avesudra

No te preocupes para eso estamos, si creas un archivo de recursos la "sintaxis" de la ruta para cargar la imagen es así , :/prefijoquehayaspuesto/nombreimagen.jpg , de todas maneras en la interfaz tienes un boton llamado pushButton y un QGraphicsView llamado graphicsView? porque si nó tienes que crearlo ... si sigues con problemas te paso el proyecto entero para que lo mires y eso.
Regístrate en

0xDani

Si, justo eso, en la interfaz tengo un boton llamado pushButton y un QGraphicsView llamado graphicsView(los nombres que vienen por defecto, despues de todo era una especie de hola mundo con imagenes).

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

avesudra

#9
¿Entonces todo solucionado no? Si tienes alguna otra duda pregunta, aunque la verdad no tengo conocimientos muy avanzados de Qt que digamos , de todas maneras creo recordar que había un manual bastante extenso en español... a ver si lo encuentro y te lo paso.

EDITADO: Bueno he encontrado un libro que era ese manual al que me refería , que es la traducción de otro libro en inglés , pero solo están la parte 2 y 3.Aunque bueno algo de info en español nunca viene mal , te dejo el libro en inglés también , he de citar al foro donde se ha hecho la traducción me parece mal pegar esto aquí sin citarlos, se llama zonaqt.

http://www.mediafire.com/?bdy7o87rs9r5aa3 versión en español.
http://www.mediafire.com/?bdy7o87rs9r5aa3 versión completa en inglés.
Regístrate en