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 135.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.
  • P Offline
    P Offline
    Payx
    wrote on last edited by Payx
    #73

    i think i fixed it i had :

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QPixmap>
    #include <QPoint>
    #include <QSize>
    #include <iostream>
    
    namespace Ui {
    	class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
    	Q_OBJECT
    
    public:
    	explicit MainWindow(QWidget *parent = 0);
    	struct CostInfo
    	{
    		QString ImageName;
    		int     cost;
    	};
    
    
    
    	~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
    

    and now i remember that i have to paste in the .h but not in public or private so i have :

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QPixmap>
    #include <QPoint>
    #include <QSize>
    #include <iostream>
    
    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
    

    and what is this line :

    QMapIterator<QRgb, CostInfo> i;
    

    because it say "no matching function to call"

    1 Reply Last reply
    0
    • 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

                                          • Login

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