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. How to include .txt on Qt
Forum Updated to NodeBB v4.3 + New Features

How to include .txt on Qt

Scheduled Pinned Locked Moved Unsolved General and Desktop
196 Posts 11 Posters 141.9k Views 3 Watching
  • 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.
  • mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #74

    I wonder if you dont have c++11 compiler.

    "no matching function to call"
    Make sure you have included QMapIterator

    1 Reply Last reply
    0
    • P Offline
      P Offline
      Payx
      wrote on last edited by
      #75

      i included, no change.

      How can i see if i have a c++ compiler ?

      mrjjM 1 Reply Last reply
      1
      • P Payx

        i included, no change.

        How can i see if i have a c++ compiler ?

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by mrjj
        #76

        @Payx
        Ok. No sure what goes wrongly for you. Seems to have CostInfo
        in .h and Costs QMap in cpp which should be fine.

        • How can i see if i have a c++ compiler ?
          c++11 compiler. Meaning a compiler that knows the new c++11 version.
          I assume you do. But if you are on linux or using old Qt it might not be the case.

        So what platform and Qt version?

        1 Reply Last reply
        0
        • P Offline
          P Offline
          Payx
          wrote on last edited by
          #77

          i paste for you all my project so you can see exactly :

          .h :

          #ifndef MAINWINDOW_H
          #define MAINWINDOW_H
          
          #include <QMainWindow>
          #include <QPixmap>
          #include <QPoint>
          #include <QSize>
          #include <iostream>
          #include <QMapIterator>
          #include <QMap>
          
          namespace Ui {
          	class MainWindow;
          }
          struct CostInfo
          {
          	QString ImageName;
          	int     cost;
          };
          
          
          class MainWindow : public QMainWindow
          {
          	Q_OBJECT
          
          public:
          	explicit MainWindow(QWidget *parent = 0);
          
          
          
          	~MainWindow();
          
          
          
          
          
          private slots:
          	void on_push_clicked();
          	void on_push2_clicked();
          
          
          	void on_verticalSlider_sliderMoved(int position);
          
          	void on_verticalSlider_actionTriggered(int action);
          
          private:
          	Ui::MainWindow *ui;
          	QImage pixi;
          	QPixmap pixa;
          	float k;
          	int a;
          
          
          	int z=1;
          	int b;
          };
          
          #endif // MAINWINDOW_H
          

          .cpp (mainwidow)

          #include "mainwindow.h"
          #include "ui_mainwindow.h"
          #include <QPixmap>
          #include <QImage>
          #include <QFileDialog>
          #include <QColor>
          #include <QPoint>
          #include <QSize>
          #include <iostream>
          #include <QMapIterator>
          #include <QMap>
          using namespace std;
          
          
          QColor Couleurdominante(const QImage& image, const QPoint& topLeft, const QSize& rectSize);
          void Remplissage(QImage& image, const QPoint& topLeft, const QSize& rectSize, const QColor& colour);
          
          
          MainWindow::MainWindow(QWidget *parent) :
          	QMainWindow(parent),
          	ui(new Ui::MainWindow)
          {
          		ui->setupUi(this);
          
          }
          
          
          MainWindow::~MainWindow()
          {
          	delete ui;
          }
          
          
          
          
          void MainWindow::on_push_clicked()
          {
          	QString fileName = QFileDialog::getOpenFileName(this,
          	tr("Open Image"), "/", tr("Image Files (*.png *.jpg *.bmp)"));
          	QPixmap pix(fileName);
          	ui->label->setPixmap(pix);
          	const QSize s = pix.size();
          	pixi = QImage(pix.toImage());
          
          	ui->label_2->setText( "Size: " + QString::number(s.width()) +" "+ QString::number(s.height()) );
          
          }
          
          void MainWindow::on_push2_clicked()
          {
          
          
          	for (int i=0;i<pixi.width();i+=z){
          						 for (int j=0;j<pixi.height();j+=z){
          							 k=k+0.06;
          							Remplissage(pixi,QPoint(i,j),QSize(z,z),Couleurdominante(pixi,QPoint(i,j),QSize(z,z)));
          
          		}
          	}
          
          	pixa=QPixmap::fromImage(pixi);
          	ui->label_3->setPixmap(pixa);
          	float a = k - 0.06*z;
          	ui->label_4->setText(QString::number(a));
          
          }
          
          
          
          
          void Remplissage(QImage& image, const QPoint& topLeft, const QSize& rectangle, const QColor& colour) {
          
          	int maxX = topLeft.x() + rectangle.width();
          	int maxY = topLeft.y() + rectangle.height();
          
          	for(int x = topLeft.x(); x < maxX; ++x) {
          		for(int y = topLeft.y(); y < maxY; ++y) {
          			image.setPixelColor(x, y, colour);
          			QMapIterator<QRgb, CostInfo> i;
          			while (Costs.hasNext()) {
          				i.next();
          				QColor BaseColor( i.key() );
          				if (Costs.contains( colour.rgb() ) || IsCloseColor(BaseColor, colour) )  {
          					CostInfo& ci = Costs[colour.rgb()];
          					int Cost = ci.Cost;
          					QPixmap pix( ci.ImageName );
          				}
          
          		}			}
          	}
          }
          
          
          QColor Couleurdominante(const QImage & image,const QPoint & topLeft, const QSize & rectangle)
          {
          		int rouge = 0, vert = 0, bleue = 0;
          
          		int  X = topLeft.x() + rectangle.width();
          		int  Y = topLeft.y() + rectangle.height();
          
          		for (int y = topLeft.y(); y < Y; y++)  {
          				for (int x = topLeft.x(); x < X; x++)   {
          						QRgb pixel = image.pixel(x, y);
          
          						rouge += qRed(pixel);
          						vert += qGreen(pixel);
          						bleue += qBlue(pixel);
          				}
          		}
          
          		int n = rectangle.width() * rectangle.height();
          
          		Q_ASSERT(n);
          		if (n <= 0)
          				return Qt::black;
          
          		return QColor(rouge / n, vert / n, bleue / n);
          }
          
          
          QMap<QRgb, CostInfo > Costs = {
          	{ QColor(255 , 0 , 0 ).rgb(), { "://fraise.png", 10 }},
          	{ QColor(0 , 255 , 0 ).rgb(), { "://balleverte.png", 20 }},
          	{ QColor(0 , 0 , 255 ).rgb(), { "://ballebleue.png", 20 }},
          	{ QColor(255 , 255 , 255 ).rgb(), { "://balleblanche.png", 20 }},
          	{ QColor(255 , 128 , 0 ).rgb(), { "://ballepeche.png", 20 }},
          	{ QColor(0 , 0 , 0 ).rgb(), { "://noir.png", 20 }},
          	{ QColor(102 , 51 , 0 ).rgb(), { "://marron.png", 20 }},
          	{ QColor(255 , 102 , 78 ).rgb(), { "://rose.png", 20 }},
          	{ QColor(0 , 204 , 204 ).rgb(), { "://turquoise.png", 20 }},
          	{ QColor(255 , 178 , 102 ).rgb(), { "://beige.png", 20 }},
          	{ QColor(76 , 0 , 153 ).rgb(), { "://violet.png", 20 }},
          	{ QColor(100 , 100 , 100 ).rgb(), { "://gris.png", 20 }},
          };
          
          bool IsCloseColor( QColor c1, QColor c2 ) {
          	int diffRed   = abs(c1.red() - c2.red());
          	int diffGreen = abs(c1.green() - c2.green());
          	int diffBlue  = abs(c1.blue()  - c2.blue());
          
          	if (diffBlue+diffRed+diffGreen< 100){
          		return true;
          
          }	else{
          				return false;
          
          
          	}
          }
          
          void MainWindow::on_verticalSlider_sliderMoved(int position)
          {
          	ui->verticalSlider->setRange(1,50);
          		z=position;
          }
          

          main .cpp

          #include "mainwindow.h"
          #include <QApplication>
          #include <QPixmap>
          #include <QCoreApplication>
          #include <QFile>
          #include <QString>
          #include <QDebug>
          #include <QTextStream>
          #include <QMap>
          #include <QMapIterator>
          
          int main(int argc, char *argv[])
          {
          	QApplication a(argc, argv);
          	MainWindow w;
          	w.show();
          
          	return a.exec();
          }
          

          I am on windows 10
          Qt 4.1.0

          1 Reply Last reply
          0
          • mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #78

            It looks ok.
            What is the exact error you get?

            Also 4.1 is very old. Are you using old mingw too?

            Old compilers might not like the initialisation list/in place
            If you just do
            QMap<QRgb, CostInfo > Costs;

            Will it compile then?

            1 Reply Last reply
            0
            • P Offline
              P Offline
              Payx
              wrote on last edited by Payx
              #79

              i added

              QMap<QRgb, CostInfo > Costs;
              

              In mainwindow.cpp

              and my error is !

              ![http://hpics.li/b0d194a](image url)

              with only QMap ... it compile

              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #80

                QMapIterator<QRgb, CostInfo> i; is wrong

                It should be something like

                QMap<QRgb, CostInfo>::const_iterator i = Costs.constBegin();
                while (i.hasNext()) {
                //etc.
                }
                

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  Payx
                  wrote on last edited by
                  #81

                  @SGaist Thank you ! i think it works

                  ![http://hpics.li/8a8e235](image url)

                  i don't know how to solve the 3 first error

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #82

                    Please, show the latest version of your code.

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • P Offline
                      P Offline
                      Payx
                      wrote on last edited by
                      #83

                      Mainwindow.cpp

                      #include "mainwindow.h"
                      #include "ui_mainwindow.h"
                      #include <QPixmap>
                      #include <QImage>
                      #include <QFileDialog>
                      #include <QColor>
                      #include <QPoint>
                      #include <QSize>
                      #include <iostream>
                      #include <QMapIterator>
                      #include <QMap>
                      using namespace std;
                      
                      
                      QColor Couleurdominante(const QImage& image, const QPoint& topLeft, const QSize& rectSize);
                      QMap<QRgb, CostInfo > Costs;
                      void Remplissage(QImage& image, const QPoint& topLeft, const QSize& rectSize, const QColor& colour);
                      bool IsCloseColor( QColor c1, QColor c2 );
                      
                      
                      MainWindow::MainWindow(QWidget *parent) :
                      	QMainWindow(parent),
                      	ui(new Ui::MainWindow)
                      {
                      		ui->setupUi(this);
                      
                      }
                      
                      
                      MainWindow::~MainWindow()
                      {
                      	delete ui;
                      }
                      
                      
                      
                      
                      void MainWindow::on_push_clicked()
                      {
                      	QString fileName = QFileDialog::getOpenFileName(this,
                      	tr("Open Image"), "/", tr("Image Files (*.png *.jpg *.bmp)"));
                      	QPixmap pix(fileName);
                      	ui->label->setPixmap(pix);
                      	const QSize s = pix.size();
                      	pixi = QImage(pix.toImage());
                      
                      	ui->label_2->setText( "Size: " + QString::number(s.width()) +" "+ QString::number(s.height()) );
                      
                      }
                      
                      void MainWindow::on_push2_clicked()
                      {
                      
                      
                      	for (int i=0;i<pixi.width();i+=z){
                      						 for (int j=0;j<pixi.height();j+=z){
                      							 k=k+0.06;
                      							Remplissage(pixi,QPoint(i,j),QSize(z,z),Couleurdominante(pixi,QPoint(i,j),QSize(z,z)));
                      
                      		}
                      	}
                      
                      	pixa=QPixmap::fromImage(pixi);
                      	ui->label_3->setPixmap(pixa);
                      	float a = k - 0.06*z;
                      	ui->label_4->setText(QString::number(a));
                      
                      }
                      
                      
                      
                      
                      void Remplissage(QImage& image, const QPoint& topLeft, const QSize& rectangle, const QColor& colour) {
                      
                      	int maxX = topLeft.x() + rectangle.width();
                      	int maxY = topLeft.y() + rectangle.height();
                      
                      	for(int x = topLeft.x(); x < maxX; ++x) {
                      		for(int y = topLeft.y(); y < maxY; ++y) {
                      			image.setPixelColor(x, y, colour);
                      			QMap<QRgb, CostInfo>::const_iterator i = Costs.constBegin();;
                      			while (i.hasNext()) {
                      				i.next();
                      				QColor BaseColor( i.key() );
                      				if (Costs.contains( colour.rgb() ) || IsCloseColor(BaseColor, colour) )  {
                      					CostInfo& ci = Costs[colour.rgb()];
                      					int Cost = ci.Cost;
                      					QPixmap pix( ci.ImageName );
                      				}
                      
                      			}
                      		}
                      	}
                      }
                      
                      
                      QColor Couleurdominante(const QImage & image,const QPoint & topLeft, const QSize & rectangle)
                      {
                      		int rouge = 0, vert = 0, bleue = 0;
                      
                      		int  X = topLeft.x() + rectangle.width();
                      		int  Y = topLeft.y() + rectangle.height();
                      
                      		for (int y = topLeft.y(); y < Y; y++)  {
                      				for (int x = topLeft.x(); x < X; x++)   {
                      						QRgb pixel = image.pixel(x, y);
                      
                      						rouge += qRed(pixel);
                      						vert += qGreen(pixel);
                      						bleue += qBlue(pixel);
                      				}
                      		}
                      
                      		int n = rectangle.width() * rectangle.height();
                      
                      		Q_ASSERT(n);
                      		if (n <= 0)
                      				return Qt::black;
                      
                      		return QColor(rouge / n, vert / n, bleue / n);
                      }
                      
                      
                      QMap<QRgb, CostInfo > Costs = {
                      	{ QColor(255 , 0 , 0 ).rgb(), { "://fraise.png", 10 }},
                      	{ QColor(0 , 255 , 0 ).rgb(), { "://balleverte.png", 20 }},
                      	{ QColor(0 , 0 , 255 ).rgb(), { "://ballebleue.png", 20 }},
                      	{ QColor(255 , 255 , 255 ).rgb(), { "://balleblanche.png", 20 }},
                      	{ QColor(255 , 128 , 0 ).rgb(), { "://ballepeche.png", 20 }},
                      	{ QColor(0 , 0 , 0 ).rgb(), { "://noir.png", 20 }},
                      	{ QColor(102 , 51 , 0 ).rgb(), { "://marron.png", 20 }},
                      	{ QColor(255 , 102 , 78 ).rgb(), { "://rose.png", 20 }},
                      	{ QColor(0 , 204 , 204 ).rgb(), { "://turquoise.png", 20 }},
                      	{ QColor(255 , 178 , 102 ).rgb(), { "://beige.png", 20 }},
                      	{ QColor(76 , 0 , 153 ).rgb(), { "://violet.png", 20 }},
                      	{ QColor(100 , 100 , 100 ).rgb(), { "://gris.png", 20 }},
                      };
                      
                      bool IsCloseColor( QColor c1, QColor c2 ) {
                      	int diffRed   = abs(c1.red() - c2.red());
                      	int diffGreen = abs(c1.green() - c2.green());
                      	int diffBlue  = abs(c1.blue()  - c2.blue());
                      
                      	if (diffBlue+diffRed+diffGreen< 100){
                      		return true;
                      
                      }	else{
                      				return false;
                      
                      
                      	}
                      }
                      
                      void MainWindow::on_verticalSlider_sliderMoved(int position)
                      {
                      	ui->verticalSlider->setRange(1,50);
                      		z=position;
                      }
                      

                      main.cpp

                      #include "mainwindow.h"
                      #include <QApplication>
                      #include <QPixmap>
                      #include <QCoreApplication>
                      #include <QFile>
                      #include <QString>
                      #include <QDebug>
                      #include <QTextStream>
                      #include <QMap>
                      #include <QMapIterator>
                      
                      int main(int argc, char *argv[])
                      {
                      	QApplication a(argc, argv);
                      	MainWindow w;
                      	w.show();
                      
                      	return a.exec();
                      }
                      

                      .h

                      #ifndef MAINWINDOW_H
                      #define MAINWINDOW_H
                      
                      #include <QMainWindow>
                      #include <QPixmap>
                      #include <QPoint>
                      #include <QSize>
                      #include <iostream>
                      #include <QMapIterator>
                      #include <QMap>
                      
                      namespace Ui {
                      	class MainWindow;
                      }
                      struct CostInfo
                      {
                      	QString ImageName;
                      	int     cost;
                      };
                      
                      
                      class MainWindow : public QMainWindow
                      {
                      	Q_OBJECT
                      
                      public:
                      	explicit MainWindow(QWidget *parent = 0);
                      
                      
                      
                      	~MainWindow();
                      
                      
                      
                      
                      
                      private slots:
                      	void on_push_clicked();
                      	void on_push2_clicked();
                      
                      
                      	void on_verticalSlider_sliderMoved(int position);
                      
                      	void on_verticalSlider_actionTriggered(int action);
                      
                      private:
                      	Ui::MainWindow *ui;
                      	QImage pixi;
                      	QPixmap pixa;
                      	float k;
                      	int a;
                      
                      
                      	int z=1;
                      	int b;
                      };
                      
                      #endif // MAINWINDOW_H
                      
                      
                      1 Reply Last reply
                      0
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #84

                        You should cleanup the casing of your variables and class member calls.

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0
                        • P Offline
                          P Offline
                          Payx
                          wrote on last edited by
                          #85

                          How clean up all ?

                          FlotisableF 1 Reply Last reply
                          0
                          • P Payx

                            How clean up all ?

                            FlotisableF Offline
                            FlotisableF Offline
                            Flotisable
                            wrote on last edited by Flotisable
                            #86

                            @Payx
                            in your definition of CostInfo, your variable is named cost not Cost

                            the member hasNext and next belong to QMapIterator, not QMap::iterator
                            read the document of QMapIterator and QMap::iterator for more information

                            1 Reply Last reply
                            2
                            • P Offline
                              P Offline
                              Payx
                              wrote on last edited by
                              #87

                              So the line

                              QMapIterator<QRgb, CostInfo> i(Costs);
                              

                              Is correct ?
                              ""
                              What is a redefinition of a QMap ? because it say that i have a redefinition of ""QMap<QRgb, CostInfo > Costs""

                              1 Reply Last reply
                              0
                              • mrjjM Offline
                                mrjjM Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on last edited by
                                #88

                                Hi
                                I move the code around so it compiled here.
                                https://www.dropbox.com/s/1z7lzjk4fqwxslz/mycolortest.zip?dl=0
                                Also change QMapIterator to a for each loop to get rid of QMapIterator.

                                If you get any errors from this it, please list them exactly.

                                1 Reply Last reply
                                0
                                • P Offline
                                  P Offline
                                  Payx
                                  wrote on last edited by
                                  #89

                                  Thanks it compile,

                                  the problem is that my window crash when i push the boutton who execute
                                  " Remplissage(pixi, QPoint(i, j), QSize(z, z), Couleurdominante(pixi, QPoint(i, j), QSize(z, z)));
                                  "
                                  ^^

                                  maybe enough things to do ?

                                  1 Reply Last reply
                                  0
                                  • mrjjM Offline
                                    mrjjM Offline
                                    mrjj
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #90

                                    Well since you know what function it is, simply set a break point and single step through the code.
                                    That way it will clearly show what line it crashes on. ;)

                                    1 Reply Last reply
                                    1
                                    • P Offline
                                      P Offline
                                      Payx
                                      wrote on last edited by
                                      #91

                                      It's not crash, the program run at infinity and do nothing

                                      mrjjM 1 Reply Last reply
                                      0
                                      • P Payx

                                        It's not crash, the program run at infinity and do nothing

                                        mrjjM Offline
                                        mrjjM Offline
                                        mrjj
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #92

                                        @Payx
                                        well that will also be really clear from single stepping :)

                                        1 Reply Last reply
                                        1
                                        • P Offline
                                          P Offline
                                          Payx
                                          wrote on last edited by Payx
                                          #93

                                          I placed breakpoint on

                                            for(int x = topLeft.x(); x < maxX; ++x) {
                                              for(int y = topLeft.y(); y < maxY; ++y) {
                                                image.setPixelColor(x, y, colour);
                                          
                                                foreach( QRgb key, Costs.keys() ) {
                                                  QColor BaseColor( key );
                                                  if (Costs.contains( colour.rgb() ) || IsCloseColor(BaseColor, colour) )  {
                                                    CostInfo& ci = Costs[colour.rgb()];
                                                    int Cost = ci.Cost;
                                                    QPixmap pix( ci.ImageName );
                                                  }
                                          
                                          

                                          because its new and before it worked.

                                          And nothing who looks like a crash happened. So i don't understand, maybe it is just a big picture (540 * 540) and the app have difficult to do the code

                                          EDIT : i tried to increase the rectangle size, it worked.

                                          but dont replace the color by a picture

                                          and it say that int cost is an unused variable

                                          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