Portál AbcLinuxu, 30. října 2025 19:35
#include QApplication
#include QPushButton
#include QLabel
#include QHBoxLayout //slouží k zarovnání prvků, snažší než zadávat souřadnice
#include QCheckBox
class trida_check : public QWidget
{
public:
/*
* Jako argument konstruktoru se předává rodič,
* v případě že se jedná o hlavní okno tak žádný
* rodič, v našem případě 0
*/
trida_check(QWidget* parent = 0);
};
trida_check::trida_check(QWidget*){
QHBoxLayout* radek = new QHBoxLayout(this);
QPushButton* tlacitko = new QPushButton(tr("Check this motherfucker!"));
QCheckBox* zaskrtavaci_pole = new QCheckBox();
//tlačítko lze zamáčknout
tlacitko->setCheckable(true);
//propojí objekty, třetí parametr je ukazatel na instanci objektu Qt, jehož slot se má spustit v reakci na signál.
connect(tlacitko, SIGNAL(clicked()), zaskrtavaci_pole, SLOT(toogle()));
connect(zaskrtavaci_pole, SIGNAL(clicked()), tlacitko, SLOT(toogle()));
//přidá do lajny naše objekty
radek->addWidget(tlacitko);
radek->addWidget(zaskrtavaci_pole);
//použije daný řádek (layout)
setLayout(radek);
}
int main(int argc, char** argv)
{
//instance třídy Qapplication, předávají se argumenty shellu, musí být v každém GUI programu
QApplication app(argc, argv);
QLabel win("Hello fucking world!"); //instance popisku
QPushButton tlacitko("&Quit"); //instance buttonou
//qApp, ukazatel na třídu QApplication, connect, přetížená metoda na propojení třídy qApp a buttonu
//QObject:: se pak může i vynechat z důvodu častého výskytu
QObject::connect(&tlacitko, SIGNAL(clicked()), qApp, SLOT(quit()));
/*
* Signál je zvláštní metoda, která nemá tělo a nevrací hodnotu, má pouze prototyp.
* Slot je metoda, která se zavolá v reakci na nějaký signál
*/
trida_check objekt;
//zobrazení okna, pzn...nečekaně
tlacitko.show();
win.show();
return app.exec(); //vracení výsledku metody app
}
Řešení dotazu:
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.