• Domingo 15 de Diciembre de 2024, 03:45

Autor Tema:  problema com mi codigo  (Leído 1018 veces)

WeraBonita

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
problema com mi codigo
« en: Sábado 18 de Julio de 2009, 00:53 »
0
hola que tal soy nuevo en esto de C++ y quiero ver si me pueden ayudar, mi situacion es la siguiente: tengo una imagen la cual la muestro en un label pasandole un pixmap, bueno muestro la imagen y despues le dibujo un rectangulo encima, mi problema es cuando quiero borrar los cambios que le hice a la imagen (osea borrar el rectangulo que le dibuje encima) se me borra toda la imagen. Lo que quiero hacer es que cuando le de click a un boton se borre el rectangulo que le dibuje a la imagen y pueda ver la imagen tal y como estaba antes de modificarla, es algo asi como deshacer los cambios que le hice a la imagen. Mi idea es volver a cargar la imagen pero no se como hacerlo sin que me salga la ventanita para volver a elegir la imagen desde mi disco duro, solo quiero que cuando le de click al botoon "deshacer" me vuelva a mostrar la imagen original. espero que me puedan ayudar.

Estoy utilizando Kdevelop con Qt4 y bajo openesuse 11.1

De antemano gracias aqui les dejo un pedazo de codigo:



#include <QXmlStreamWriter>
#include "design.h"
#include <stdio.h>
#include <iostream>
#include <QFileDialog>
#include <QtGui>
#include <QTextEdit>
#include <QTextStream>
#include <QTextEdit>
#include <fstream>
#include <kimagefilepreview.h>
#include <kurllabel.h>
#include <ncurses.h>
#include <QGraphicsView>
#include <QInputEvent>
#include <QEvent>
#include <QMouseEvent>
#include <QCursor>
#include <QImage>
#include <QPixmap>
#include <QLineF>
#include <QPainter>
#include <QRectF>
#include<QBrush>
#include<QPen>
#include<QPixmapCache>
using namespace std;




Design::Design ( QWidget* parent, Qt::WFlags fl )
      : QWidget ( parent, fl ), Ui::CR()
{
   setupUi ( this );

// KImageFilePreview pKImageFilePreview = new KImageFilePreview(this);
// pkImageFilePreview ->setGeometry(QFrame(QFramePrivate &dd, pKImageFilePreview* parent = 0, Qt::WindowFlags f = 0);
// pKImageFilePreview ->setMinimunSize(630,388);
// imagePreviewLayout ->addWidget(pKImageFilePreview);






// To show the windows in the middle of the screen
//***************************************************************************************

   QDesktopWidget *desktop = QApplication::desktop();

   int screenWidth, width;
   int screenHeight, height;
   int x, y;
   QSize windowSize;

   screenWidth = desktop->width(); // get width of screen
   screenHeight = desktop->height(); // get height of screen

   windowSize = size(); // size of our application window
   width = windowSize.width();
   height = windowSize.height();

// little computations
   x = ( screenWidth - width ) / 2;
   y = ( screenHeight - height ) / 2;
   y -= 50;

// move window to desired coordinates
   move ( x, y );


//***************************************************************************************


//signal and slot conection
   connect ( ButtonBrowse, SIGNAL ( clicked() ), this, SLOT ( ShowImage() ) );
   connect ( ButtonOkSel, SIGNAL ( clicked() ),this , SLOT ( getMouseClicked() ) );
   connect ( ButtonShowSelection, SIGNAL ( clicked() ) ,this, SLOT ( repaint() ) );
   connect ( ButtonCancelChar, SIGNAL ( clicked() ) ,this, SLOT ( update() ) );


//createActions();//////////////////////////////////////


}

Design::~Design()
{
}

/*$SPECIALIZATION$*/
/*void Design::clicked()
{

}*/


void Design::loadFile ( const QString &fileName )
{
   QFile file ( fileName );
   QTextStream in ( &file );
}


void Design::ShowImage()
{


   const QString fileName = QFileDialog::getOpenFileName ( this );

   if ( !fileName.isEmpty() )
      loadFile ( fileName );


   ViewCar=QPixmap ( fileName );

   


   if ( !ViewCar.isNull() )
   {
      LabelPlate->setPixmap ( ViewCar );

   }



   w=ViewCar.width();
   h=ViewCar.height();
   labelw->setNum ( w );
   labelh->setNum ( h );


}


/*
void Design::setPicture(){
QLabel *LabelIMG;
QPicture *ViewPlate;
LabelIMG->setPicture(const View=Plate);
}*/


void Design::getMouseClicked()
{
//     int x=11;
//     int y=250;
//
//    if (x>10&&y<500){
//   QLineEdit *lineEditChar = new QLineEdit();
   LabelIMG->setText ( "click" );
   //}

}






void Design::mousePressEvent ( QMouseEvent* event )
{



   difX=421/w;
   difY=191/h;

   switch ( event->button() )
   {
      case Qt::LeftButton:

         px1=event->QMouseEvent::x();
         posX1= ( px1-680 ) /difX;
         labelX1Char->setNum ( posX1 );
         py1=event->QMouseEvent::y();
         posY1= ( py1-170 ) /difY;
         labelY1Char->setNum ( posY1 );
         break;
      case Qt::RightButton:

         px2=event->QMouseEvent::x();
         posX2= ( px2-680 ) /difX;
         labelX2Char->setNum ( posX2 );
         py2=event->QMouseEvent::y();
         posY2= ( py2-170 ) /difY;
         labelY2Char->setNum ( posY2 );

         break;
      default:
         LabelIMG->setText ( "hola" );

   }



   width = ( posX2 )- ( posX1 );
   height = ( posY2 )- ( posY1 );
   LabelWidth->setNum ( width );
   LabelHeight->setNum ( height );


   posX11= ( int ) ( posX1 );
   posY11= ( int ) ( posY1 );
   width1= ( int ) ( width );
   height1= ( int ) ( height );




//QRectF rectangle=QRect(posX1,posY1,width,height);




//rectangle.setBrush(Qt::SolidPattern);



//QPainter painter(this);
//painter.drawEllipse(rectangle);

}



void Design::repaint()
{
   QPainter rectangle;
   rectangle.begin ( &ViewCar );
   QPen pen;
   pen.setColor ( Qt::blue );
   pen.setWidth ( 0.5 );
   rectangle.setPen ( pen );
   rectangle.drawRect ( posX11,posY11,width1,height1 );
   rectangle.fillRect ( posX11,posY11,width,height1,Qt::Dense4Pattern );
   LabelPlate->setPixmap (ViewCar );

}

void Design::update()     //// ********************************************** con este slot quiero volver a mostrar la imagen*******************************
{
   labelX1Char->setNum ( 0 );
   labelY1Char->setNum ( 0 );
   labelX2Char->setNum ( 0 );
   labelY2Char->setNum ( 0 );
   LabelWidth->setText ( fileName );
   LabelHeight->setNum ( 0 );





// if ( !fileName.isEmpty() )
//  loadFile ( fileName );

//  ViewCar=QPixmap ( fileName );
//
//  LabelPlate->setPixmap ( ViewCar );

//    QPainter EraseRect;
//    EraseRect.restore();
//    EraseRect.begin ( &ViewCar );
//     EraseRect.eraseRect ( posX11,posY11,width1,height1 );
// LabelPlate->setPixmap ( ViewCar );
}