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
Forum Updated to NodeBB v4.3 + New Features

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

Scheduled Pinned Locked Moved Brainstorm
28 Posts 5 Posters 14.8k 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.
  • 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