Qt/Qt Designer (Version 3.x) GUI questions
-
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();
}
@ -
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. :-)
-
All,
The example worked ! Thank you all for your notes.
I have further questions:
- 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
- The worked out example indicates the ability to do the sequence:
-
[quote]
Push a Button —> Query an interface —> Receive reply from interface —> signal/slot/map a GIF file based on interface reply —> display GIF in mylabelWhere 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.
-
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 -
Yes, from "QAbstractButton":http://doc.qt.nokia.com/latest/qabstractbutton.html
-
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 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.