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 142.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 Payx

    @Flotisable Thank you,

    so i have to define CostInfo as an int ?

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

    @Payx
    in your case, one of the value you give is { "://fraise.png", 10 }, which is composed of a string and a integer

    it seems CostInfo should look like this

    struct CostInfo
    {
      QString imageName;
      int     cost;
    };
    
    1 Reply Last reply
    1
    • P Offline
      P Offline
      Payx
      wrote on last edited by
      #63

      Okay understood how it works now.

      Why it say that "Costs" is not declared, it is the name of the QMap right ?

      mrjjM 1 Reply Last reply
      0
      • P Payx

        Okay understood how it works now.

        Why it say that "Costs" is not declared, it is the name of the QMap right ?

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

        @Payx
        Yes Costs is the QMap variable.

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

          How do i declare a QMap ?

          i tried

          QMap<QRgb, CostInfo > Costs;
          
          mrjjM 1 Reply Last reply
          0
          • P Payx

            How do i declare a QMap ?

            i tried

            QMap<QRgb, CostInfo > Costs;
            
            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #66

            @Payx
            Yes that is how you declare an empty QMap called Costs.

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

              Yes but it say that CostInfo is not declared again

              mrjjM 1 Reply Last reply
              0
              • P Payx

                Yes but it say that CostInfo is not declared again

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

                @Payx
                CostInfo must be declared before you use it in QMap
                Where is it?
                you used to have struct CostInfo declaration.

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

                  I put my declaration of CostInfo in my .h

                  mrjjM 1 Reply Last reply
                  0
                  • P Payx

                    I put my declaration of CostInfo in my .h

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

                    @Payx
                    and is that .h file included in the same file where u have the Qmap def ?

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

                      i got

                      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 }},
                      };
                      

                      in my .cpp

                      and struct in my .h,

                      do i paste "QMap<QRgb, CostInfo > Costs;" in my .cpp like my function or in my .h (sorry but i didnt understand ur question ^^)

                      mrjjM 1 Reply Last reply
                      0
                      • P Payx

                        i got

                        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 }},
                        };
                        

                        in my .cpp

                        and struct in my .h,

                        do i paste "QMap<QRgb, CostInfo > Costs;" in my .cpp like my function or in my .h (sorry but i didnt understand ur question ^^)

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

                        @Payx
                        it sounds right.

                        The CostInfo is in .h ?

                        Can you show it ?

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

                                          • Login

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