Qt for beginners Exercise 1 answer

From Qt Wiki
Revision as of 09:56, 24 February 2015 by Maintenance script (talk | contribs)
Jump to navigation Jump to search

[toc align_right="yes" depth="3"]


Qt for beginners — Exercise 1 : basis (Answer)

<<< Exercise 1 : basis | Summary | Exercise 2 >>>

Widgets

Since this application seems to be quite complicated, we have chosen to split into several files :

main.cpp

<br />#include &lt;QApplication&amp;gt;<br />#include &quot;window.h&amp;quot;

int main(int argc, char **argv)<br />{<br /> QApplication app (argc, argv);

Window window;<br /> window.show();

return app.exec&amp;amp;#40;&amp;#41;;<br />}<br />

window.h

<br />#ifndef WINDOW_H<br />#define WINDOW_H

#include &lt;QWidget&amp;gt;

class QPushButton;<br />class QRadioButton;<br />class Window : public QWidget<br />{<br />public:<br /> explicit Window(QWidget *parent = 0);<br />private:<br /> QRadioButton *m_chickenButton;<br /> QRadioButton *m_sandwichButton;<br /> QRadioButton *m_soupButton;

QPushButton *m_selectButton;<br />};

#endif // WINDOW_H<br />

window.cpp

<br />#include &quot;window.h&amp;quot;

#include &lt;QRadioButton&amp;gt;<br />#include &lt;QPushButton&amp;gt;<br />#include &lt;QButtonGroup&amp;gt;

Window::Window(QWidget *parent) :<br /> QWidget(parent)<br />{<br /> // Set size of the window<br /> setFixedSize(200, 150);

// Create and position the button<br /> m_chickenButton = new QRadioButton(&quot;Roasted chicken&amp;quot;, this);<br /> m_chickenButton-&gt;setGeometry(10, 10, 180, 30);

m_sandwichButton = new QRadioButton(&quot;Sandwich&amp;quot;, this);<br /> m_sandwichButton-&gt;setGeometry(10, 40, 180, 30);

m_soupButton = new QRadioButton(&quot;Soup&amp;quot;, this);<br /> m_soupButton-&gt;setGeometry(10, 70, 180, 30);

m_selectButton = new QPushButton(&quot;Select this menu&amp;quot;, this);<br /> m_selectButton-&gt;setGeometry(10, 110, 180, 30);

QButtonGroup '''group = new QButtonGroup(this);<br /> group-&gt;addButton(m_chickenButton);<br /> group-&gt;addButton(m_sandwichButton);<br /> group-&gt;addButton(m_soupButton);<br />}<br />


You can also remove the buttons from the attributes list and put the inside the constructor.


h2. Signals and slots


<br />#include &lt;QApplication&amp;gt;<br />#include &lt;QPushButton&amp;gt;
<br />int main(int argc, char'''*argv)<br />{<br /> QApplication app (argc, argv);

QWidget window;<br /> window.setFixedSize(100, 80);

QPushButton *buttonInfo = new QPushButton(&quot;Info&amp;quot;, &amp;window);<br /> buttonInfo-&gt;setGeometry(10, 10, 80, 30);

QPushButton *buttonQuit = new QPushButton(&quot;Quit&amp;quot;, &amp;window);<br /> buttonQuit-&gt;setGeometry(10, 40, 80, 30);

window.show();

// Connections<br /> // Connecting the button associated to info to the &quot;aboutQt&amp;quot; slot of QApplication<br /> QObject::connect(buttonInfo, SIGNAL (clicked()), &amp;app, SLOT (aboutQt()));

// Connecting the button associated to close to the &quot;quit&amp;quot; slot of QApplication<br /> QObject::connect(buttonQuit, SIGNAL (clicked()), &amp;app, SLOT (quit()));

return app.exec&amp;amp;#40;&amp;#41;;<br />}<br />