Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Connect trouble

Connect trouble

Scheduled Pinned Locked Moved Unsolved General and Desktop
5 Posts 2 Posters 412 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    marius.thorre
    wrote on last edited by
    #1

    Hello,
    I have a main class imagedit.cpp which contains button Filter and Image. When i click to Filtre button, imagedit open a new widget which contains other button (changeBlackAndWhite button for example). I wish to connect my image with these button. That is the code:

    #include "imagedit.h"
    #include "ui_imagedit.h"
    #include <QFileDialog>
    #include <QStandardPaths>
    #include <QListWidgetItem>
    #include <QPushButton>
    #include <QDebug>
    
    ImagEdit::ImagEdit(QWidget *parent) : QMainWindow(parent), ui(new Ui::ImagEdit)
    {
        ui->setupUi(this);
        path = new QString();
        pix = new QPixmap(*path);
    }
    
    ImagEdit::~ImagEdit()
    {
        delete ui;
        delete pix;
        delete path;
    }
    
    void ImagEdit::on_open_clicked()
    {
        QString cheminInitial = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
        QString cheminFichier = QFileDialog::getOpenFileName(this, "Sélectionnez un fichier", cheminInitial);
        QFileInfo fileInfo(cheminFichier);
        QString nomFichier = fileInfo.fileName();
        QPushButton *button = new QPushButton(nomFichier, this);
    
        connect(button, SIGNAL(clicked()), this, SLOT(displayOnEdition()));
        *path = cheminFichier;
        QListWidgetItem *item = new QListWidgetItem;
    
        ui->library->addItem(item);
        ui->library->setItemWidget(item, button);
    }
    
    void ImagEdit::displayOnEdition()
    {
        QPixmap pix(*path);
        pix = pix.scaled(381, 271, Qt::KeepAspectRatio);
        ui->imageLabel->setPixmap(pix);
    
    }
    
    
    void ImagEdit::on_filter_clicked()
    {
        
        FilterArea *filter = new FilterArea();
        filter->setImage(pix->toImage());
    
        filter->show();
       
    }
    
    void ImagEdit::on_rogner_clicked()
    {
        RognerArea *rogner = new RognerArea();
        rogner->show();
    }
    
    ############################################
    
    #include "filterarea.h"
    #include "ui_filterarea.h"
    
    FilterArea::FilterArea(QWidget *parent)
        : QWidget(parent)
        , ui(new Ui::FilterArea)
    {
        ui->setupUi(this);
    
    }
    
    FilterArea::~FilterArea()
    {
        delete ui;
    }
    
    void FilterArea::on_NbFilterButton_clicked()
    {
        qDebug() << "NbFilterButton clicked";
    
        emit applyNbFilter();
    }
    
    void FilterArea::setImage(QImage image) {
        imageSelected = image;
        
    //connect(ui->NbFilterButton, SIGNAL(clicked()), ImagEdit.cpp), SLOT(appliquerFiltreNoirEtBlanc()));
    }
    
    void FilterArea::appliquerFiltreNoirEtBlanc()
    {
    
        qDebug() << "Appliquer filtre Noir et Blanc";
    
        if (!imageSelected.isNull()) {
            QImage imageNoirEtBlanc(imageSelected.size(), QImage::Format_Grayscale8);
    
            for (int y = 0; y < imageSelected.height(); ++y) {
                for (int x = 0; x < imageSelected.width(); ++x) {
                    QRgb pixel = imageSelected.pixel(x, y);
                    int grayValue = qGray(pixel);
                    imageNoirEtBlanc.setPixel(x, y, qRgb(grayValue, grayValue, grayValue));
                }
            }
    
            //setImage(imageNoirEtBlanc);
        }
        else {
            qDebug() << "Erreur : Aucune image actuelle à traiter.";
        }
    }
    
    

    9efbd3be-5312-4b15-b51d-fc250baf514c-image.png

    fcdf7eeb-0613-4de0-a4c0-207f270a9b5d-image.png

    JonBJ 1 Reply Last reply
    0
    • M marius.thorre

      Hello,
      I have a main class imagedit.cpp which contains button Filter and Image. When i click to Filtre button, imagedit open a new widget which contains other button (changeBlackAndWhite button for example). I wish to connect my image with these button. That is the code:

      #include "imagedit.h"
      #include "ui_imagedit.h"
      #include <QFileDialog>
      #include <QStandardPaths>
      #include <QListWidgetItem>
      #include <QPushButton>
      #include <QDebug>
      
      ImagEdit::ImagEdit(QWidget *parent) : QMainWindow(parent), ui(new Ui::ImagEdit)
      {
          ui->setupUi(this);
          path = new QString();
          pix = new QPixmap(*path);
      }
      
      ImagEdit::~ImagEdit()
      {
          delete ui;
          delete pix;
          delete path;
      }
      
      void ImagEdit::on_open_clicked()
      {
          QString cheminInitial = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
          QString cheminFichier = QFileDialog::getOpenFileName(this, "Sélectionnez un fichier", cheminInitial);
          QFileInfo fileInfo(cheminFichier);
          QString nomFichier = fileInfo.fileName();
          QPushButton *button = new QPushButton(nomFichier, this);
      
          connect(button, SIGNAL(clicked()), this, SLOT(displayOnEdition()));
          *path = cheminFichier;
          QListWidgetItem *item = new QListWidgetItem;
      
          ui->library->addItem(item);
          ui->library->setItemWidget(item, button);
      }
      
      void ImagEdit::displayOnEdition()
      {
          QPixmap pix(*path);
          pix = pix.scaled(381, 271, Qt::KeepAspectRatio);
          ui->imageLabel->setPixmap(pix);
      
      }
      
      
      void ImagEdit::on_filter_clicked()
      {
          
          FilterArea *filter = new FilterArea();
          filter->setImage(pix->toImage());
      
          filter->show();
         
      }
      
      void ImagEdit::on_rogner_clicked()
      {
          RognerArea *rogner = new RognerArea();
          rogner->show();
      }
      
      ############################################
      
      #include "filterarea.h"
      #include "ui_filterarea.h"
      
      FilterArea::FilterArea(QWidget *parent)
          : QWidget(parent)
          , ui(new Ui::FilterArea)
      {
          ui->setupUi(this);
      
      }
      
      FilterArea::~FilterArea()
      {
          delete ui;
      }
      
      void FilterArea::on_NbFilterButton_clicked()
      {
          qDebug() << "NbFilterButton clicked";
      
          emit applyNbFilter();
      }
      
      void FilterArea::setImage(QImage image) {
          imageSelected = image;
          
      //connect(ui->NbFilterButton, SIGNAL(clicked()), ImagEdit.cpp), SLOT(appliquerFiltreNoirEtBlanc()));
      }
      
      void FilterArea::appliquerFiltreNoirEtBlanc()
      {
      
          qDebug() << "Appliquer filtre Noir et Blanc";
      
          if (!imageSelected.isNull()) {
              QImage imageNoirEtBlanc(imageSelected.size(), QImage::Format_Grayscale8);
      
              for (int y = 0; y < imageSelected.height(); ++y) {
                  for (int x = 0; x < imageSelected.width(); ++x) {
                      QRgb pixel = imageSelected.pixel(x, y);
                      int grayValue = qGray(pixel);
                      imageNoirEtBlanc.setPixel(x, y, qRgb(grayValue, grayValue, grayValue));
                  }
              }
      
              //setImage(imageNoirEtBlanc);
          }
          else {
              qDebug() << "Erreur : Aucune image actuelle à traiter.";
          }
      }
      
      

      9efbd3be-5312-4b15-b51d-fc250baf514c-image.png

      fcdf7eeb-0613-4de0-a4c0-207f270a9b5d-image.png

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by JonB
      #2

      @marius-thorre said in Connect trouble:

      //connect(ui->NbFilterButton, SIGNAL(clicked()), ImagEdit.cpp), SLOT(appliquerFiltreNoirEtBlanc()));

      I don't know whether it does what you want, but are you asking for the syntax here for your "Connect trouble"? It would be

      connect(ui->NbFilterButton, SIGNAL(clicked()), this, SLOT(appliquerFiltreNoirEtBlanc()));
      

      If you intend to call FilterArea::setImage() more than once you should not put a connect() statement inside it. connect()s are usually done once in the constructor.

      M 1 Reply Last reply
      1
      • JonBJ JonB

        @marius-thorre said in Connect trouble:

        //connect(ui->NbFilterButton, SIGNAL(clicked()), ImagEdit.cpp), SLOT(appliquerFiltreNoirEtBlanc()));

        I don't know whether it does what you want, but are you asking for the syntax here for your "Connect trouble"? It would be

        connect(ui->NbFilterButton, SIGNAL(clicked()), this, SLOT(appliquerFiltreNoirEtBlanc()));
        

        If you intend to call FilterArea::setImage() more than once you should not put a connect() statement inside it. connect()s are usually done once in the constructor.

        M Offline
        M Offline
        marius.thorre
        wrote on last edited by
        #3

        @JonB I find something:

        #include "imagedit.h"
        #include "ui_imagedit.h"
        #include <QFileDialog>
        #include <QStandardPaths>
        #include <QListWidgetItem>
        #include <QPushButton>
        #include <QDebug>
        
        ImagEdit::ImagEdit(QWidget *parent) : QMainWindow(parent), ui(new Ui::ImagEdit)
        {
            ui->setupUi(this);
            path = new QString();
            pix = new QPixmap(*path);
        }
        
        ImagEdit::~ImagEdit()
        {
            delete ui;
            delete pix;
            delete path;
        }
        
        void ImagEdit::on_open_clicked()
        {
            QString cheminInitial = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
            QString cheminFichier = QFileDialog::getOpenFileName(this, "Sélectionnez un fichier", cheminInitial);
            QFileInfo fileInfo(cheminFichier);
            QString nomFichier = fileInfo.fileName();
            QPushButton *button = new QPushButton(nomFichier, this);
        
            connect(button, SIGNAL(clicked()), this, SLOT(displayOnEdition()));
            *path = cheminFichier;
            QListWidgetItem *item = new QListWidgetItem;
        
            ui->library->addItem(item);
            ui->library->setItemWidget(item, button);
        }
        
        void ImagEdit::displayOnEdition()
        {
            QPixmap pix(*path);
            pix = pix.scaled(381, 271, Qt::KeepAspectRatio);
            ui->imageLabel->setPixmap(pix);
        
        }
        
        
        void ImagEdit::on_filter_clicked()
        {
            FilterArea *filterarea = new FilterArea();
            //connect(filterarea, filterarea->appliquerFiltreNoirEtBlanc(pix->toImage()), this, ui->imageLabel);
            filterarea->setImage(ui->imageLabel->pixmap().toImage());
            filterarea->show();
        }
        
        
        
        void ImagEdit::on_rogner_clicked()
        {
            RognerArea *rogner = new RognerArea();
            rogner->show();
        }
        
        
        
        ######################################
        
        #include "filterarea.h"
        #include "ui_filterarea.h"
        
        #include <iostream>
        using namespace std;
        
        FilterArea::FilterArea(QWidget *parent)
            : QWidget(parent)
            , ui(new Ui::FilterArea)
        {
            ui->setupUi(this);
        
        }
        
        FilterArea::~FilterArea()
        {
            delete ui;
        }
        
        void FilterArea::on_NbFilterButton_clicked()
        {
            qDebug() << "NbFilterButton clicked";
            emit applyNbFilter();
        }
        
        void FilterArea::setImage(QImage image) {
            imageSelected = image;
            connect(ui->NbFilterButton, SIGNAL(clicked()), this, SLOT(appliquerFiltreNoirEtBlanc()));
        }
        
        void FilterArea::appliquerFiltreNoirEtBlanc()
        {
        
            qDebug() << "Appliquer filtre Noir et Blanc";
        
            if (!imageSelected.isNull()) {
                cout << "coucou "<< imageSelected.isNull() << endl;
                QImage imageNoirEtBlanc(imageSelected.size(), QImage::Format_Grayscale8);
        
                for (int y = 0; y < imageSelected.height(); ++y) {
                    for (int x = 0; x < imageSelected.width(); ++x) {
                        QRgb pixel = imageSelected.pixel(x, y);
                        int grayValue = qGray(pixel);
                        imageSelected.setPixel(x, y, qRgb(grayValue, grayValue, grayValue));
                    }
                }
        
        
            }
            else {
                qDebug() << "Erreur : Aucune image actuelle à traiter.";
            }
        }
        
        

        but i cannot change color of my picture (i check into imageSelectedIsNull and the result is 0, so it's the good image)

        JonBJ M 2 Replies Last reply
        0
        • M marius.thorre

          @JonB I find something:

          #include "imagedit.h"
          #include "ui_imagedit.h"
          #include <QFileDialog>
          #include <QStandardPaths>
          #include <QListWidgetItem>
          #include <QPushButton>
          #include <QDebug>
          
          ImagEdit::ImagEdit(QWidget *parent) : QMainWindow(parent), ui(new Ui::ImagEdit)
          {
              ui->setupUi(this);
              path = new QString();
              pix = new QPixmap(*path);
          }
          
          ImagEdit::~ImagEdit()
          {
              delete ui;
              delete pix;
              delete path;
          }
          
          void ImagEdit::on_open_clicked()
          {
              QString cheminInitial = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
              QString cheminFichier = QFileDialog::getOpenFileName(this, "Sélectionnez un fichier", cheminInitial);
              QFileInfo fileInfo(cheminFichier);
              QString nomFichier = fileInfo.fileName();
              QPushButton *button = new QPushButton(nomFichier, this);
          
              connect(button, SIGNAL(clicked()), this, SLOT(displayOnEdition()));
              *path = cheminFichier;
              QListWidgetItem *item = new QListWidgetItem;
          
              ui->library->addItem(item);
              ui->library->setItemWidget(item, button);
          }
          
          void ImagEdit::displayOnEdition()
          {
              QPixmap pix(*path);
              pix = pix.scaled(381, 271, Qt::KeepAspectRatio);
              ui->imageLabel->setPixmap(pix);
          
          }
          
          
          void ImagEdit::on_filter_clicked()
          {
              FilterArea *filterarea = new FilterArea();
              //connect(filterarea, filterarea->appliquerFiltreNoirEtBlanc(pix->toImage()), this, ui->imageLabel);
              filterarea->setImage(ui->imageLabel->pixmap().toImage());
              filterarea->show();
          }
          
          
          
          void ImagEdit::on_rogner_clicked()
          {
              RognerArea *rogner = new RognerArea();
              rogner->show();
          }
          
          
          
          ######################################
          
          #include "filterarea.h"
          #include "ui_filterarea.h"
          
          #include <iostream>
          using namespace std;
          
          FilterArea::FilterArea(QWidget *parent)
              : QWidget(parent)
              , ui(new Ui::FilterArea)
          {
              ui->setupUi(this);
          
          }
          
          FilterArea::~FilterArea()
          {
              delete ui;
          }
          
          void FilterArea::on_NbFilterButton_clicked()
          {
              qDebug() << "NbFilterButton clicked";
              emit applyNbFilter();
          }
          
          void FilterArea::setImage(QImage image) {
              imageSelected = image;
              connect(ui->NbFilterButton, SIGNAL(clicked()), this, SLOT(appliquerFiltreNoirEtBlanc()));
          }
          
          void FilterArea::appliquerFiltreNoirEtBlanc()
          {
          
              qDebug() << "Appliquer filtre Noir et Blanc";
          
              if (!imageSelected.isNull()) {
                  cout << "coucou "<< imageSelected.isNull() << endl;
                  QImage imageNoirEtBlanc(imageSelected.size(), QImage::Format_Grayscale8);
          
                  for (int y = 0; y < imageSelected.height(); ++y) {
                      for (int x = 0; x < imageSelected.width(); ++x) {
                          QRgb pixel = imageSelected.pixel(x, y);
                          int grayValue = qGray(pixel);
                          imageSelected.setPixel(x, y, qRgb(grayValue, grayValue, grayValue));
                      }
                  }
          
          
              }
              else {
                  qDebug() << "Erreur : Aucune image actuelle à traiter.";
              }
          }
          
          

          but i cannot change color of my picture (i check into imageSelectedIsNull and the result is 0, so it's the good image)

          JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by
          #4

          @marius-thorre said in Connect trouble:

          imageSelected = image;

          This copies image.

          imageSelected.setPixel()

          This alters the copied image.

          So after copying and changing in imageSelected, where do you then show this changed image?

          1 Reply Last reply
          0
          • M marius.thorre

            @JonB I find something:

            #include "imagedit.h"
            #include "ui_imagedit.h"
            #include <QFileDialog>
            #include <QStandardPaths>
            #include <QListWidgetItem>
            #include <QPushButton>
            #include <QDebug>
            
            ImagEdit::ImagEdit(QWidget *parent) : QMainWindow(parent), ui(new Ui::ImagEdit)
            {
                ui->setupUi(this);
                path = new QString();
                pix = new QPixmap(*path);
            }
            
            ImagEdit::~ImagEdit()
            {
                delete ui;
                delete pix;
                delete path;
            }
            
            void ImagEdit::on_open_clicked()
            {
                QString cheminInitial = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
                QString cheminFichier = QFileDialog::getOpenFileName(this, "Sélectionnez un fichier", cheminInitial);
                QFileInfo fileInfo(cheminFichier);
                QString nomFichier = fileInfo.fileName();
                QPushButton *button = new QPushButton(nomFichier, this);
            
                connect(button, SIGNAL(clicked()), this, SLOT(displayOnEdition()));
                *path = cheminFichier;
                QListWidgetItem *item = new QListWidgetItem;
            
                ui->library->addItem(item);
                ui->library->setItemWidget(item, button);
            }
            
            void ImagEdit::displayOnEdition()
            {
                QPixmap pix(*path);
                pix = pix.scaled(381, 271, Qt::KeepAspectRatio);
                ui->imageLabel->setPixmap(pix);
            
            }
            
            
            void ImagEdit::on_filter_clicked()
            {
                FilterArea *filterarea = new FilterArea();
                //connect(filterarea, filterarea->appliquerFiltreNoirEtBlanc(pix->toImage()), this, ui->imageLabel);
                filterarea->setImage(ui->imageLabel->pixmap().toImage());
                filterarea->show();
            }
            
            
            
            void ImagEdit::on_rogner_clicked()
            {
                RognerArea *rogner = new RognerArea();
                rogner->show();
            }
            
            
            
            ######################################
            
            #include "filterarea.h"
            #include "ui_filterarea.h"
            
            #include <iostream>
            using namespace std;
            
            FilterArea::FilterArea(QWidget *parent)
                : QWidget(parent)
                , ui(new Ui::FilterArea)
            {
                ui->setupUi(this);
            
            }
            
            FilterArea::~FilterArea()
            {
                delete ui;
            }
            
            void FilterArea::on_NbFilterButton_clicked()
            {
                qDebug() << "NbFilterButton clicked";
                emit applyNbFilter();
            }
            
            void FilterArea::setImage(QImage image) {
                imageSelected = image;
                connect(ui->NbFilterButton, SIGNAL(clicked()), this, SLOT(appliquerFiltreNoirEtBlanc()));
            }
            
            void FilterArea::appliquerFiltreNoirEtBlanc()
            {
            
                qDebug() << "Appliquer filtre Noir et Blanc";
            
                if (!imageSelected.isNull()) {
                    cout << "coucou "<< imageSelected.isNull() << endl;
                    QImage imageNoirEtBlanc(imageSelected.size(), QImage::Format_Grayscale8);
            
                    for (int y = 0; y < imageSelected.height(); ++y) {
                        for (int x = 0; x < imageSelected.width(); ++x) {
                            QRgb pixel = imageSelected.pixel(x, y);
                            int grayValue = qGray(pixel);
                            imageSelected.setPixel(x, y, qRgb(grayValue, grayValue, grayValue));
                        }
                    }
            
            
                }
                else {
                    qDebug() << "Erreur : Aucune image actuelle à traiter.";
                }
            }
            
            

            but i cannot change color of my picture (i check into imageSelectedIsNull and the result is 0, so it's the good image)

            M Offline
            M Offline
            marius.thorre
            wrote on last edited by
            #5

            @marius-thorre i was thinking it change himself

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved