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
Qt 6.11 is out! See what's new in the release blog

Connect trouble

Scheduled Pinned Locked Moved Unsolved General and Desktop
5 Posts 2 Posters 430 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