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.
  • 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