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
    #9

    The link to the QSignalmapper docs I gave you has an example that is similar to what you want. I suggest you start with it and then use the setIcon method later on.

    You can ask specific questions as you proceed. If you show us some code of what you accomplished it's easier to help.

    Qt Certified Specialist
    www.edalsolutions.be

    1 Reply Last reply
    0
    • G Offline
      G Offline
      goetz
      wrote on last edited by
      #10

      Then please switch to Qt4. You can always get the sources from the "Qt download pages":http://qt.nokia.com/downloads/downloads#qt-lib (get the as tar.gz) and compile Qt yourself, it's only a matter of a

      @
      ./configure
      make
      sudo make install
      @

      combo.

      Qt3 is outdated and definitely not recommended for new projects - only use it if you absolutely must. Qt5 is in a rise already!

      http://www.catb.org/~esr/faqs/smart-questions.html

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

        All,

        I have made the switch to Qt 4. However, I have scoured over Qt , TrollTech and Nokia pages, examples and web search resources to to attempt finding a Qt4 example tied to my application and I simply cannot find one.

        I am in urgent need of a simple example showing the following (hand-code C++ would be OK):

        1. A widget (on top) where a GIF file can be loaded and displayed within it (the GIF files are externally crafted, so that's not a problem)

        2. Two push-buttons (below the widget in 1) ) horizontally placed. Each push-button loads a separate GIF:

        • push-button 1 loads GIF # 1 in 1)
        • push-button 2 loads GIF # 2 in 1)

        Eddy: You mentioned using QSignalMapper in Qt 4 with setIcon and the smarts on QString to find the right GIF files. I cant' seem to locate it in the examples section of Qt 4. Can you show me a really simple example or send me the code you refer to ?

        All: I really need your help.

        Thank you very much,

        Qt-Newbie

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