Rólam Tanulmányok és Oktatás Érdeklődési körök Munkák
| (C) 2005 Zimler Attila Tamás <hijaszu@hlfslinux.hu> BevezetésA QT widgeteit lehetőségünk van úgy elhelyezni, hogy automatikusan a lehető legjobb méreteket vegyék fel, amennyiben az ablakot átméretezzük. Ugyanakkor a QMainWindow osztály objektumaiba az egyedi elhelyező rendszer miatt nehézkes ennek használata. Ez az oldal ennek a két problémának a megoldását fogja demonstrálni. A példaprogram teljes forráskódja itt található: packaging.cpp. FordításAmennyiben a példaprogramot a cd /tmp qmake -project qmake make ./tmp A látványA programot elindítva a következő képernyőt látjuk:
Az ablak alapállapotban Figyeljük meg, hogy az ablakot megnyújtva a gombok is a megfelelő méretűre nyúlnak:
Az ablak megnyújtott állapotban Megjegyzés: Azért a QT widget csomagoló rendszere nem teljesen tökéletes, mert a gombot illene függőleges irányban is megfelelően nyújtani, amit nem tesz meg. A kód elemzéseAz ablak osztályának definíciója.
class Packaging : public QMainWindow {
QWidget *cw; // A QMainWindow leendő központi widgete
QVBoxLayout *vbox; // Függőleges elhelyezés
QHBoxLayout *line1, *line2; // A gombok sorai (első és második)
QPushButton *btn1, *btn2, *btn3, *btn4; // A gombok
public:
Packaging();
~Packaging();
};
Ebben nincsen semmi különös, definiálunk egy osztályt konstruktorral és destruktorral. A konstruktor:
Packaging::Packaging()
{
setCentralWidget(cw = new QWidget(this));
vbox = new QVBoxLayout(cw);
line1 = new QHBoxLayout;
line2 = new QHBoxLayout;
vbox->addLayout(line1); vbox->addLayout(line2);
btn1 = new QPushButton("1", cw);
btn2 = new QPushButton("2", cw);
btn3 = new QPushButton("3", cw);
btn4 = new QPushButton("4", cw);
line1->addWidget(btn1);
line2->addWidget(btn2); line2->addWidget(btn3); line2->addWidget(btn4);
}
Ahhoz, hogy az első A destruktor:
Packaging::~Packaging()
{
delete cw;
}
Az egyetlen widgetet felszabadítjuk, amelyet fel kell. Amennyiben például a A főprogram:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Packaging pkg;
app.setMainWidget(&pkg);
pkg.show();
return app.exec();
}
A főprogramban semmi extra nincsen, létrehozunk egy alkalmazást, létrehozzuk az ablakot, beállítjuk, hogy az a fő objektum és elindítjuk az alkalmazást. |
1.7.5.1