[QT] Problem z QImage
Ostatnio zmodyfikowano 2015-03-17 19:58
killermannnnn Temat założony przez niniejszego użytkownika |
[QT] Problem z QImage » 2015-03-17 17:45:03 Mam program, który powinien rysować na ekranie obraz i zmieniac jego jasnośc przy naciskaniu strzałek w góre lub w dół. Problem w tym, że nie ładuje sie żaden obraz mimo, że plik o podanej nazwie jest w folderze projektu. Co może być błędem ? main.cpp : #include "mainwindow.h" #include <QApplication> #include "imagewidget.h"
int main( int argc, char * argv[] ) { QApplication a( argc, argv ); ImageWidget iw; iw.show(); return a.exec(); }
imagewidget.h: #ifndef IMAGEWIDGET #define IMAGEWIDGET
#include <QImage> #include <QWidget>
class ImageWidget : public QWidget { QImage image; QImage resultImage; int bright; void processImage(); protected: virtual void keyPressEvent( QKeyEvent * ); virtual void paintEvent( QPaintEvent * ); public: ImageWidget( QWidget * parent = 0 ); };
#endif
imageWidget.cpp: #include "imagewidget.h" #include <QPainter> #include <QKeyEvent>
using namespace std;
ImageWidget::ImageWidget( QWidget * parent ) : QWidget( parent ) { image = QImage( "xxx.png" ); resultImage = image; bright = 0; }
void ImageWidget::paintEvent( QPaintEvent * ) { QPainter painter( this ); painter.drawImage( 0, 0, resultImage ); }
void ImageWidget::processImage() { for( int y = 0; y < image.height(); y++ ) { QRgb * pd =( QRgb * ) resultImage.scanLine( y ); QRgb * ps =( QRgb * ) image.scanLine( y ); for( int x = 0; x < image.width(); x++ ) { int r = max( 0, min( 255, qRed( ps[ x ] ) + bright ) ); int g = max( 0, min( 255, qGreen( ps[ x ] ) + bright ) ); int b = max( 0, min( 255, qBlue( ps[ x ] ) + bright ) ); pd[ x ] = qRgba( r, g, b, qAlpha( ps[ x ] ) ); } } }
void ImageWidget::keyPressEvent( QKeyEvent * e ) { if( e->key() == Qt::Key_Up ) bright += 1; if( e->key() == Qt::Key_Down ) bright -= 1; processImage(); update(); }
|
|
kubawal |
» 2015-03-17 19:58:24 Generalnie oficjalny tutorial dla wszystkich składowych z Qt używa wskaźników i dynamicznej alokacji, więc lepiej sie tego trzymać.
BTW zgubiłeś Q_OBJECT |
|
« 1 » |