Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. General talk
  3. Brainstorm
  4. Qt/Qt Designer (Version 3.x) GUI questions

Qt/Qt Designer (Version 3.x) GUI questions

Scheduled Pinned Locked Moved Brainstorm
28 Posts 5 Posters 13.6k Views
  • 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.
  • EddyE Offline
    EddyE Offline
    Eddy
    wrote on last edited by
    #12

    this is the "link":http://doc.qt.nokia.com/4.7/qsignalmapper.html#details I gave you. It still works ;)
    I know it's not exactly what you want to do but it gives you a good start.

    What do you have so far?

    Qt Certified Specialist
    www.edalsolutions.be

    1 Reply Last reply
    0
    • L Offline
      L Offline
      loladiro
      wrote on last edited by
      #13

      consider the following:
      @
      //in mylabel.h
      class MyLabel : public QLabel
      {
      Q_OBJECT

      public slots:
      void setFileName(QString name)
      {
      setPixmap(name);
      }
      };

      //in main.cpp
      int main(int argc, char *argv[])
      {
      QApplication app(argc, argv);

       QSignalMapper mapper;
       MyLabel label;
       QPushButton b1;
       QPushButton b2;
       mapper.setMapping(&b1,"gif1.gif");
       mapper.setMapping(&b2,"gif2.gif");
       QObject::connect(&b1,SIGNAL(clicked()),&mapper,SLOT(map()));
       QObject::connect(&b2,SIGNAL(clicked()),&mapper,SLOT(map()));
       QObject::connect(&mapper,SIGNAL(mapped(QString)),&label,SLOT(setFileName(QString)));
       label.show();
      
       return app.exec();
      

      }

      @

      1 Reply Last reply
      0
      • Q Offline
        Q Offline
        qt-newbie107
        wrote on last edited by
        #14

        Eddy, Loladiro,

        Thanks very much for your replies.

        Loladiro: I will start with your code and let you know how I fare.

        Qt-Newbie

        1 Reply Last reply
        0
        • L Offline
          L Offline
          loladiro
          wrote on last edited by
          #15

          There was a copy&paste error in my code.
          I had
          @
          mapper.setMapping(&b2,"gif2.gif");
          @
          twice. It's fixed now.

          1 Reply Last reply
          0
          • Q Offline
            Q Offline
            qt-newbie107
            wrote on last edited by
            #16

            Loladiro,

            I took your code and made some mods to it so that it would compile without errors using Qt 4.2.1. Here they are:

            1. mylabel.h

            @
            #ifndef MYLABEL_H
            #define MYLABEL_H

            #include <QLabel>

            //in mylabel.h
            class MyLabel : public QLabel
            {
            Q_OBJECT

            public slots:
            void setFileName(QString name)
            {
            setPixmap(name);
            }
            };

            #endif
            @

            1. Also, made some mods to main.cpp:

            @
            #include <QApplication>
            #include <QSignalMapper>
            #include <QPushButton>

            #include "mylabel.h"

            //in main.cpp
            int main(int argc, char *argv[])
            {
            QApplication app(argc, argv);

             QSignalMapper mapper;
             MyLabel label;
             QPushButton b1;
             QPushButton b2;
             mapper.setMapping(&b1,"gif1.gif");
             mapper.setMapping(&b2,"gif2.gif");
             QObject::connect(&b1,SIGNAL(clicked()),&mapper,SLOT(map()));
             QObject::connect(&b2,SIGNAL(clicked()),&mapper,SLOT(map()));
             QObject::connect(&mapper,SIGNAL(mapped(QString)),&label,SLOT(setFileName(QString)));
             label.show();
            
             return app.exec();
            

            }
            @

            When I run the executable, I get a very small window. When I expand it, I am getting a pure grey background: No pushbuttons. No gifs displayed. Nothing.

            Please help.

            Thanks,
            Qt-Newbie

            1 Reply Last reply
            0
            • L Offline
              L Offline
              loladiro
              wrote on last edited by
              #17

              I though you would incorporate it into existing code, my mistake:
              @
              int main(int argc, char *argv[])
              {
              QApplication app(argc, argv);

               QWidget mainWidget;
              
               QSignalMapper mapper;
               MyLabel label;
               QPushButton b1(&mainWidget);
               QPushButton b2(&mainWidget);
               mapper.setMapping(&b2,"gif2.gif");
               mapper.setMapping(&b2,"gif2.gif");
               QObject::connect(&b1,SIGNAL(clicked()),&mapper,SLOT(map()));
               QObject::connect(&b2,SIGNAL(clicked()),&mapper,SLOT(map()));
               QObject::connect(&mapper,SIGNAL(mapped(QString)),&label,SLOT(setFileName(QString)));
              
               QVBoxLayout verticalLayout(&mainWidget);
               verticalLayout.addWidget(&label);
               QHBoxLayout horizontalLayout(&mainWidget);
               horizontalLayout.addWidget(&b1);
               horizontalLayout.addWidget(&b2);
               verticalLayout.addLayout(&horizontalLayout);
              
               mainWidget.show();
              
               return app.exec();
              

              }
              @

              1 Reply Last reply
              0
              • M Offline
                M Offline
                mlong
                wrote on last edited by
                #18

                You're never calling show() on your buttons.

                While, ideally, all the widgets should be children of another parent widget with a layout, etc., the code you have is sufficient to test out the mechanics of the QSignalMapper, but you currently need to show each widget.

                Edit: Nevermind. You figured it out. :-)

                Software Engineer
                My views and opinions do not necessarily reflect those of anyone -- living or dead, real or fictional -- in this universe or any other similar multiverse node. Void where prohibited. Your mileage may vary. Caveat emptor.

                1 Reply Last reply
                0
                • L Offline
                  L Offline
                  loladiro
                  wrote on last edited by
                  #19

                  @
                  Edit: Nevermind. You figured it out. :-)
                  @
                  I would have included all that for the beginning, but I thought he wanted an example usage, not a complete app.

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    mlong
                    wrote on last edited by
                    #20

                    No worries. It all seems to have sorted itself out :-)

                    Software Engineer
                    My views and opinions do not necessarily reflect those of anyone -- living or dead, real or fictional -- in this universe or any other similar multiverse node. Void where prohibited. Your mileage may vary. Caveat emptor.

                    1 Reply Last reply
                    0
                    • Q Offline
                      Q Offline
                      qt-newbie107
                      wrote on last edited by
                      #21

                      All,

                      The example worked ! Thank you all for your notes.

                      I have further questions:

                      1. The worked out example indicates the ability to do the sequence:
                        Push a Button --> signal/slot --> map a GIFn file --> display GIFn in mylabel

                      What I would need to do is:

                      a) Push a Button --> Query an interface --> Receive reply from interface --> signal/slot/map a GIF file based on interface reply --> display GIF in mylabel

                      Where would I put the stub code to accomplish this ? Is there a Qt 4 solution ?

                      b) Can I make system call functions in Qt 4 ? I am talking a "system()" type call to a Python 2.4 script I have already developed.

                      Please reply.

                      Thank you all,

                      Qt-Newbie

                      1 Reply Last reply
                      0
                      • L Offline
                        L Offline
                        loladiro
                        wrote on last edited by
                        #22

                        [quote]
                        Push a Button —> Query an interface —> Receive reply from interface —> signal/slot/map a GIF file based on interface reply —> display GIF in mylabel

                        Where would I put the stub code to accomplish this ? Is there a Qt 4 solution ?
                        [/quote]
                        A little bit trickier, but like:
                        @

                        class MyMainWindow
                        {
                        QLabel *label;

                        public slots:
                        void buttonClicked(int nr)
                        {
                        label->setPixmap(queryInterface(nr));
                        }
                        };

                        //and the button creation like:
                        for(int i = 0; i < maxButtons; ++i)
                        {
                        QPushButton *b = new QPushButton(this);
                        mapper.setMapping(b,i);
                        connect(b,SIGNAL(clicked()),&mapper,SLOT(map()));
                        myLayout->addWidget(b);
                        }

                        @

                        Depending on how long it takes to query the interface, you might want to have a separate, slot to set the image that is being called once the interface is done.

                        [quote]
                        b) Can I make system call functions in Qt 4 ? I am talking a “system()” type call to a Python 2.4 script I have already developed.
                        [/quote]

                        Have a look at "QProcess":http://doc.qt.nokia.com/latest/qprocess.html

                        DISCLAIMER: The code shown is a use case example and neither complete nor intended for direct use in an application.

                        1 Reply Last reply
                        0
                        • Q Offline
                          Q Offline
                          qt-newbie107
                          wrote on last edited by
                          #23

                          All,

                          How do I place text inside the pushbuttons ? I do not see any methods with the QPushButton class. Is it inherited ?

                          Please reply.

                          Thanks,
                          Qt-Newbie

                          1 Reply Last reply
                          0
                          • L Offline
                            L Offline
                            loladiro
                            wrote on last edited by
                            #24

                            Yes, from "QAbstractButton":http://doc.qt.nokia.com/latest/qabstractbutton.html

                            1 Reply Last reply
                            0
                            • Q Offline
                              Q Offline
                              qt-newbie107
                              wrote on last edited by
                              #25

                              Loladiro,

                              Thanks. I got the button text labels via the QAbstractButton class.

                              Please explain where "queryInterface(nr)" is defined. I am a bit confused. Do I need to write a class/method for this ? Is it a wrapper ?

                              Thanks,
                              Qt-Newbie

                              1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                mlong
                                wrote on last edited by
                                #26

                                Qt-newbie, please start a new thread for new topics.

                                Software Engineer
                                My views and opinions do not necessarily reflect those of anyone -- living or dead, real or fictional -- in this universe or any other similar multiverse node. Void where prohibited. Your mileage may vary. Caveat emptor.

                                1 Reply Last reply
                                0
                                • EddyE Offline
                                  EddyE Offline
                                  Eddy
                                  wrote on last edited by
                                  #27

                                  I splitted it and used this title :
                                  Can you please recommend a textbook on Qt4

                                  Qt Certified Specialist
                                  www.edalsolutions.be

                                  1 Reply Last reply
                                  0
                                  • L Offline
                                    L Offline
                                    loladiro
                                    wrote on last edited by
                                    #28

                                    [quote author="qt-newbie" date="1313106592"]Loladiro,

                                    Thanks. I got the button text labels via the QAbstractButton class.

                                    Please explain where "queryInterface(nr)" is defined. I am a bit confused. Do I need to write a class/method for this ? Is it a wrapper ?

                                    Thanks,
                                    Qt-Newbie[/quote]

                                    Since I have no idea what kind of interface you have I just put it there to indicate where you have to query your interface.

                                    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