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. [SOLVED] changing image using keypress
Forum Updated to NodeBB v4.3 + New Features

[SOLVED] changing image using keypress

Scheduled Pinned Locked Moved General and Desktop
28 Posts 3 Posters 8.3k Views 1 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.
  • F Offline
    F Offline
    Francknos
    wrote on last edited by
    #4

    Try to have your QMovie in private membre of your class and construt it in constructor.

    but I think the function keyPressEvent works. The proble is in your QMovie.

    1 Reply Last reply
    0
    • S Offline
      S Offline
      sasireka
      wrote on last edited by
      #5

      [quote author="Francknos" date="1412060594"]Try to have your QMovie in private membre of your class and construt it in constructor.

      but I think the function keyPressEvent works. The proble is in your QMovie. [/quote]

      yes exactly. i changed like this. now it is working fine. Thanks alot.

      @void Dialog::keyPressEvent(QKeyEvent *e)
      {
      switch ( e->key() )
      {
      case Qt::Key_F2 :
      QMovie *movie = new QMovie("/home/dev6/Desktop/animation/spectrum.gif");
      QLabel *processLabel = new QLabel(this);
      ui->processLabel->setMovie(movie);
      movie->start();
      break;
      }
      }@

      .................................
      Thanks & Regards

      Sasi

      .................................
      Go Green

      1 Reply Last reply
      0
      • S Offline
        S Offline
        sasireka
        wrote on last edited by
        #6

        but if i am pressing the same key again have to show next image is it possible..

        .................................
        Thanks & Regards

        Sasi

        .................................
        Go Green

        1 Reply Last reply
        0
        • S Offline
          S Offline
          sasireka
          wrote on last edited by
          #7

          This is working fine for showing the next next picture by pressing the same key.

          Thanks alot to Francknos and all for your great help.

          @void Dialog::keyPressEvent(QKeyEvent *e)
          {

          static int key_press;
          
          if(e->key() == Qt::Key_F2)
          {
              key_press++;
          }
          
          if(key_press == 1)
              {
                      QMovie *movie = new QMovie("/home/dev6/Desktop/animation/spectrum.gif");
                      QLabel *processLabel = new QLabel(this);
                      ui->processLabel->setMovie(movie);
                      movie->start();
          
                      ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                      ui->label1->show();
              }
          
           if(key_press == 2)
              {
                      QMovie *movie = new QMovie("/home/dev6/Desktop/animation/1.gif");
                      QLabel *processLabel = new QLabel(this);
                      ui->processLabel->setMovie(movie);
                      movie->start();
          
                      ui->label1->setText(QString::fromUtf8("சென்னை Namakkal"));
                      ui->label1->show();
              }
           if(key_press == 3)
              {
                      QMovie *movie = new QMovie("/home/dev6/Desktop/animation/2.gif");
                      QLabel *processLabel = new QLabel(this);
                      ui->processLabel->setMovie(movie);
                      movie->start();
          
                      ui->label1->setText(QString::fromUtf8("coimbatore சென்னை"));
                      ui->label1->show();
              }
          

          }@

          .................................
          Thanks & Regards

          Sasi

          .................................
          Go Green

          1 Reply Last reply
          0
          • IamSumitI Offline
            IamSumitI Offline
            IamSumit
            wrote on last edited by
            #8

            Hi.
            Yeah it is possible.

            Be Cute

            1 Reply Last reply
            0
            • S Offline
              S Offline
              sasireka
              wrote on last edited by
              #9

              [quote author="IamSumit" date="1412069646"]Hi.
              Yeah it is possible.

              [/quote]

              yes i done . thanks

              .................................
              Thanks & Regards

              Sasi

              .................................
              Go Green

              1 Reply Last reply
              0
              • F Offline
                F Offline
                Francknos
                wrote on last edited by
                #10

                construct a QVector<QMovie> _movies;
                and add it to constructor then when you press F2:

                cpt++
                ui->processLabel->setMovie(_movies[cpt]);
                _movies[cpt]->start();

                1 Reply Last reply
                0
                • IamSumitI Offline
                  IamSumitI Offline
                  IamSumit
                  wrote on last edited by
                  #11

                  @void Dialog::keyPressEvent(QKeyEvent *e)
                  {

                  static int key_press;
                  
                  if(e->key() == Qt::Key_F2)
                  {
                      key_press++;
                  }
                  
                  if(key_press == 1)
                      {
                              QMovie *movie = new QMovie("/home/dev6/Desktop/animation/spectrum.gif");
                              QLabel *processLabel = new QLabel(this);
                              ui->processLabel->setMovie(movie);
                              movie->start();
                  
                              ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                              ui->label1->show();
                      }
                  
                   if(key_press == 2)
                      {
                              QMovie *movie = new QMovie("/home/dev6/Desktop/animation/1.gif");
                              QLabel *processLabel = new QLabel(this);
                              ui->processLabel->setMovie(movie);
                              movie->start();
                  
                              ui->label1->setText(QString::fromUtf8("சென்னை Namakkal"));
                              ui->label1->show();
                      }
                   if(key_press == 3)
                      {
                              QMovie *movie = new QMovie("/home/dev6/Desktop/animation/2.gif");
                              QLabel *processLabel = new QLabel(this);
                              ui->processLabel->setMovie(movie);
                              movie->start();
                  
                              ui->label1->setText(QString::fromUtf8("coimbatore சென்னை"));
                              ui->label1->show();
                      }
                  

                  }@

                  hi..
                  this is not a right way.Because many of same instructions are repeating.

                  you can optimize your code .You must create a method with parameter QString path
                  e'g;
                  @
                  void ShowPicture(QString path)
                  {
                  QMovie *movie = new QMovie(path);
                  QLabel *processLabel = new QLabel(this);
                  ui->processLabel->setMovie(movie);
                  movie->start();

                              ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                              ui->label1->show();
                  

                  }
                  @
                  hope it helps

                  Be Cute

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    sasireka
                    wrote on last edited by
                    #12

                    [quote author="Francknos" date="1412070831"]construct a QVector<QMovie> _movies;
                    and add it to constructor then when you press F2:

                    cpt++
                    ui->processLabel->setMovie(_movies[cpt]);
                    _movies[cpt]->start();
                    [/quote]

                    okay i will try in this way...

                    .................................
                    Thanks & Regards

                    Sasi

                    .................................
                    Go Green

                    1 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      sasireka
                      wrote on last edited by
                      #13

                      [quote author="IamSumit" date="1412074165"]

                      hi..
                      this is not a right way.Because many of same instructions are repeating.

                      you can optimize your code .You must create a method with parameter QString path
                      e'g;
                      @
                      void ShowPicture(QString path)
                      {
                      QMovie *movie = new QMovie(path);
                      QLabel *processLabel = new QLabel(this);
                      ui->processLabel->setMovie(movie);
                      movie->start();

                                  ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                                  ui->label1->show();
                      

                      }
                      @
                      hope it helps[/quote]

                      okay. How to call this function and where to call it.

                      .................................
                      Thanks & Regards

                      Sasi

                      .................................
                      Go Green

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        sasireka
                        wrote on last edited by
                        #14

                        i used like this getting error

                        /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:53: error: a function-definition is not allowed here before '{' token

                        /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:69: error: 'ShowPicture' was not declared in this scope

                        @void Dialog::keyPressEvent(QKeyEvent *e)
                        {

                        void ShowPicture(QString path)
                        {
                                        QMovie *movie = new QMovie(path);
                                        QLabel *processLabel = new QLabel(this);
                                        ui->processLabel->setMovie(movie);
                                        movie->start();
                        
                                        ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                                        ui->label1->show();
                        }
                        
                        static int key_press = 0;
                        
                        if(e->key() == Qt::Key_F3)
                        {
                        
                           // QString path = "/home/dev6/Desktop/animation/3.gif";
                            ShowPicture("/home/dev6/Desktop/animation/3.gif");
                            
                        }@
                        

                        .................................
                        Thanks & Regards

                        Sasi

                        .................................
                        Go Green

                        1 Reply Last reply
                        0
                        • IamSumitI Offline
                          IamSumitI Offline
                          IamSumit
                          wrote on last edited by
                          #15

                          [quote author="sasireka" date="1412078116"]i used like this getting error

                          /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:53: error: a function-definition is not allowed here before '{' token

                          /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:69: error: 'ShowPicture' was not declared in this scope

                          @void Dialog::keyPressEvent(QKeyEvent *e)
                          {

                          void ShowPicture(QString path)
                          {
                                          QMovie *movie = new QMovie(path);
                                          QLabel *processLabel = new QLabel(this);
                                          ui->processLabel->setMovie(movie);
                                          movie->start();
                          
                                          ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                                          ui->label1->show();
                          }
                          
                          static int key_press = 0;
                          
                          if(e->key() == Qt::Key_F3)
                          {
                          
                             // QString path = "/home/dev6/Desktop/animation/3.gif";
                              ShowPicture("/home/dev6/Desktop/animation/3.gif");
                              
                          }@[/quote]
                          

                          hi..
                          After looking your code ...i think you are new to programming.are you?
                          you are defining the method inside another method .this is not the correct
                          way
                          just call ShowPicture("/home/dev6/Desktop/animation/2.gif");
                          then you will not face any error.
                          hope it helps

                          Be Cute

                          1 Reply Last reply
                          0
                          • S Offline
                            S Offline
                            sasireka
                            wrote on last edited by
                            #16

                            [quote author="IamSumit" date="1412079562"][quote author="sasireka" date="1412078116"]i used like this getting error

                            /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:53: error: a function-definition is not allowed here before '{' token

                            /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:69: error: 'ShowPicture' was not declared in this scope

                            @void Dialog::keyPressEvent(QKeyEvent *e)
                            {

                            void ShowPicture(QString path)
                            {
                                            QMovie *movie = new QMovie(path);
                                            QLabel *processLabel = new QLabel(this);
                                            ui->processLabel->setMovie(movie);
                                            movie->start();
                            
                                            ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                                            ui->label1->show();
                            }
                            
                            static int key_press = 0;
                            
                            if(e->key() == Qt::Key_F3)
                            {
                            
                               // QString path = "/home/dev6/Desktop/animation/3.gif";
                                ShowPicture("/home/dev6/Desktop/animation/3.gif");
                                
                            }@[/quote]
                            

                            hi..
                            After looking your code ...i think you are new to programming.are you?
                            you are defining the method inside another method .this is not the correct
                            way
                            just call ShowPicture("/home/dev6/Desktop/animation/2.gif");
                            then you will not face any error.
                            hope it helps[/quote]

                            good day. yes i am new to Qt programming. Okay i will do like this. Thanks Sumit. Give me a guide to learn Qt programming and library usage.

                            .................................
                            Thanks & Regards

                            Sasi

                            .................................
                            Go Green

                            1 Reply Last reply
                            0
                            • S Offline
                              S Offline
                              sasireka
                              wrote on last edited by
                              #17

                              bq. hi..
                              After looking your code ...i think you are new to programming.are you?
                              you are defining the method inside another method .this is not the correct
                              way
                              just call ShowPicture("/home/dev6/Desktop/animation/2.gif");
                              then you will not face any error.
                              hope it helps[/quote]bq.

                              i did like below. but getting errors.

                              @void ShowPicture(QString path)
                              {
                              QMovie *movie = new QMovie(path);
                              QLabel *processLabel = new QLabel(this);
                              ui->processLabel->setMovie(movie);
                              movie->start();

                                          ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                                          ui->label1->show();
                              

                              }

                              void Dialog::keyPressEvent(QKeyEvent *e)
                              {

                              if(e->key() == Qt::Key_F3)
                              {
                                      ShowPicture(”/home/dev6/Desktop/animation/2.gif”);
                              }
                              

                              }@

                              .................................
                              Thanks & Regards

                              Sasi

                              .................................
                              Go Green

                              1 Reply Last reply
                              0
                              • IamSumitI Offline
                                IamSumitI Offline
                                IamSumit
                                wrote on last edited by
                                #18

                                Hi .
                                Can you show me your full code (including .h)?
                                and tell me what errors you are getting also?

                                Be Cute

                                1 Reply Last reply
                                0
                                • S Offline
                                  S Offline
                                  sasireka
                                  wrote on last edited by
                                  #19

                                  [quote author="IamSumit" date="1412144476"]Hi .
                                  Can you show me your full code (including .h)?
                                  and tell me what errors you are getting also?

                                  [/quote]

                                  @#include "dialog.h"
                                  #include "ui_dialog.h"
                                  #include <QMovie>
                                  #include <QImage>
                                  #include <QFontDatabase>
                                  #include <QDebug>
                                  #include <QKeyEvent>

                                  Dialog::Dialog(QWidget *parent) :
                                  QDialog(parent),
                                  ui(new Ui::Dialog)
                                  {
                                  ui->setupUi(this);
                                  }

                                  Dialog::~Dialog()
                                  {
                                  delete ui;
                                  }

                                  void ShowPicture(QString path)
                                  {
                                  QMovie *movie = new QMovie(path);
                                  QLabel *processLabel = new QLabel(this);
                                  ui->processLabel->setMovie(movie);
                                  movie->start();

                                              ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                                              ui->label1->show();
                                  

                                  }

                                  void Dialog::keyPressEvent(QKeyEvent *e)
                                  {

                                  if(e->key() == Qt::Key_F3)
                                  {
                                          ShowPicture(”/home/dev6/Desktop/animation/2.gif”);
                                  }
                                  

                                  }@

                                  .................................
                                  Thanks & Regards

                                  Sasi

                                  .................................
                                  Go Green

                                  1 Reply Last reply
                                  0
                                  • IamSumitI Offline
                                    IamSumitI Offline
                                    IamSumit
                                    wrote on last edited by
                                    #20

                                    ok.
                                    ShowPicture(QString) is the member function/method of Dialog class.
                                    i can't see proper definition of this method.
                                    in line 21.
                                    @
                                    Replace void Dialog::ShowPicture(QString path)
                                    @

                                    and in .h file declare this method as member.
                                    in .h file. add this line
                                    @
                                    public:
                                    void ShowPicture(QString path);
                                    @

                                    and your oops basics are not clear.So, Please improve your basics first.

                                    Hope it helps.

                                    Be Cute

                                    1 Reply Last reply
                                    0
                                    • S Offline
                                      S Offline
                                      sasireka
                                      wrote on last edited by
                                      #21

                                      i tried . but still getting error

                                      .................................
                                      Thanks & Regards

                                      Sasi

                                      .................................
                                      Go Green

                                      1 Reply Last reply
                                      0
                                      • IamSumitI Offline
                                        IamSumitI Offline
                                        IamSumit
                                        wrote on last edited by
                                        #22

                                        What errors ?

                                        Be Cute

                                        1 Reply Last reply
                                        0
                                        • S Offline
                                          S Offline
                                          sasireka
                                          wrote on last edited by
                                          #23

                                          Good day.
                                          [quote author="IamSumit" date="1412164041"]What errors ?[/quote]

                                          @void Dialog::ShowPicture(QString path)
                                          {
                                          QMovie *movie = new QMovie(path);
                                          QLabel *processLabel = new QLabel(this);
                                          ui->processLabel->setMovie(movie);
                                          movie->start();

                                                      ui->label1->setText(QString::fromUtf8("chennai  சென்னை"));
                                                      ui->label1->show();
                                          

                                          }

                                          void Dialog::keyPressEvent(QKeyEvent *e)
                                          {

                                          if(e->key() == Qt::Key_F3)
                                          {
                                                  ShowPicture(/home/dev6/Desktop/animation/2.gif);
                                          }
                                          

                                          }@

                                          errors:

                                          1. /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:70: error: invalid suffix "gif" on floating constant

                                          2. * /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:-1: In member function 'void Dialog::ShowPicture(QString)':
                                          1
                                          <* /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:70: error: expected primary-expression before '/' token

                                          2< /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:70: error: 'home' was not declared in this scope

                                          3< /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:70: error: 'home' was not declared in this scope

                                          4< /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:70: error: 'Desktop' was not declared in this scope

                                          5< /home/dev6/Desktop/animation-build-desktop-Qt_4_8_1_in_PATH__System__Release/../animation/dialog.cpp:70: error: 'animation' was not declared in this scope

                                          .................................
                                          Thanks & Regards

                                          Sasi

                                          .................................
                                          Go Green

                                          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