Problem mit Qt!



  • Hi alle zusammen.
    Folgendes Problem hab ich:

    ich soll mithilfe des unten geschriebenen codes (programms), Flaggen, die vertikal dreigeteilt wie z.B. Italien oder Irland oder diagonal (von links unten nach rechts oben, sodass 2-farbige bereiche entstehen) erweitern.

    #include <qapplication.h>
    #include <qvaluevector.h>
    #include <qcombobox.h>
    #include <qpainter.h>
    #include <qstring.h>
    #include <qobject.h>
    #include <qlayout.h>
    
    class Land
    {
      private:
        QString name;
        QColor  color1;
        QColor  color2;
        QColor  color3;
      public: 
        Land(QString Str="", QColor c1=QColor(0,0,0), 
                             QColor c2=QColor(0,0,0),
                             QColor c3=QColor(0,0,0)) 
        {
          name=Str;
          color1=c1;
          color2=c2;
          color3=c3;
        }
        QString getName() { return name; }
        QColor  getColor1() { return color1; }
        QColor  getColor2() { return color2; }
        QColor  getColor3() { return color3; }
    };
    
    // ---------------------------------------------------------
    
    class myWidget : public QWidget 
    {
     Q_OBJECT;
    public:
      myWidget();
    protected:
      virtual void paintEvent(QPaintEvent*);
      virtual void mousePressEvent(QMouseEvent*);
    public slots:
      void setLand(int);
    signals:
      void pressed();
    private:
      QComboBox   *laenderAuswahl;
      QValueVector<Land>   laenderListe;
      Land aktLand;
    };
    
    myWidget::myWidget()
    {
      setBackgroundColor(white);
    
      laenderListe=QValueVector<Land>();
    
      // Länder eintragen
    
      Land L1("Bolivien",QColor(255,0,0), 
                         QColor(255,255,0), QColor(0,255,0));
      laenderListe.push_back(L1);
      Land L2("Deutschland",QColor(0,0,0),
                            QColor(255,0,0), QColor(255,255,0));
      laenderListe.push_back(L2);
      Land L3("Gabun",QColor(0,255,0), 
                      QColor(255,255,0), QColor(0,0,255));
      laenderListe.push_back(L3);
      Land L4("Niederlande",QColor(255,0,0), 
                            QColor(255,255,255), QColor(0,0,255));
      laenderListe.push_back(L4);
      Land L5("Sierra Leone",QColor(0,255,0), 
                             QColor(255,255,255), QColor(0,0,255));
      laenderListe.push_back(L5);
    
      aktLand=laenderListe[0];
    
      QGridLayout *l = new QGridLayout( this, 2, 1, 20, 5 );
    
      laenderAuswahl = new QComboBox( this );
      for (int i=0; i<laenderListe.size(); i++)
        laenderAuswahl->insertItem( laenderListe[i].getName() );
    
      connect( laenderAuswahl, SIGNAL(activated(int)), 
                              this, SLOT(setLand(int)) );
    
      l->addWidget(laenderAuswahl,1,0);
    
      connect( this, SIGNAL(pressed()), qApp, SLOT(quit()) );
    }
    
    void myWidget::setLand(int i)
    {
       aktLand=laenderListe[i];
       update();
    }
    
    void myWidget::paintEvent(QPaintEvent *e)
    {
      QPainter *paint = new QPainter();
      paint->begin(this);
    
      paint->setWindow(0,0,300,280);
    
      paint->setPen(black);
      paint->setBrush(aktLand.getColor1());
      paint->drawRect(20,40,260,51);
      paint->setBrush(aktLand.getColor2());
      paint->drawRect(20,90,260,51);
      paint->setBrush(aktLand.getColor3());
      paint->drawRect(20,140,260,51);
    
      paint->end();
    }
    
    void myWidget::mousePressEvent(QMouseEvent *e)
    {
      emit pressed();
    }
    
    #include "flaggen.moc"
    
    int main(int argc, char **argv)
    {
        QApplication app(argc,argv);
    
        myWidget *wid = new myWidget();
    
        wid->resize(300,280);
        wid->show();
    
        app.setMainWidget(wid);
        return app.exec();
    }
    

    ich bedanke mich bei allen die mir helfen

    mfg aschlechter



  • Hallo

    Was ist denn nun deine konkrete Frage?

    chrische



  • hi,
    das problem ist, dass ich nicht weiss wie ich den code verändern soll damit ich dann die flaggen vertikal dreigeteilt wie z.B. Italien und diagonal (von links unten nach rechts oben, sodass 2-farbige bereiche entstehen).

    hättest du vielleicht ne idee?!

    danke



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • aschlechter schrieb:

    hi,
    das problem ist, dass ich nicht weiss wie ich den code verändern soll damit ich dann die flaggen vertikal dreigeteilt wie z.B. Italien und diagonal (von links unten nach rechts oben, sodass 2-farbige bereiche entstehen).

    hättest du vielleicht ne idee?!

    danke

    In der Methode void myWidget::paintEvent(QPaintEvent *e) werden die Flaggen gemalt. Wie das dort gemacht wird und wie du dann deine neuen Flaggen malen kannst steht in der Dokumentation zu QPainter.


Anmelden zum Antworten