Následující aplikace patří mezi ty jednodušší, dokáže totiž pouze sečíst dvě celá čísla. Mnohem zajímavější však je způsob ovládání. Naučíme se vytvořit klasické menu včetně toolbaru.
Práce v designérském režimu
Při zakládání nového projektu nezapomeňte, že tentokrát budeme vycházet z třídy QMainWindow. Po otevření vzhledu okna začneme s přidáním dvou prvků line edit a několika popisků (label). Kompletně vynecháme jakákoliv tlačítka a vrhneme se na ovládací nabídku. Jednoduše vypíšeme názvy jednotlivých položek v menu, které se následně usídlí ve spodní záložce Action editor. Po kliknutí na některou z nich se nám otevře okno, ve kterém lze nastavit mnoho užitečných věcí. Konkrétně si ze souboru přidáme vhodnou ikonu. Pokud žádnou nedisponujete, vyzkoušejte tzv. projekt Nuvola. Jedná se o obsáhlou sadu ikonek v nejpoužívanějších rozměrech uvolněnou pod licencí LGPL.
Horké klávesy
Vždy se vyplácí aplikaci navrhovat takovým způsobem, aby ji bylo možno ovládat bez pomoci kurzoru myši. Stačí před název položky přidat znak ampersand (&) a následně lze využít následující písmeno při kombinaci s klávesou ALT pro získání kontroly nad programem. Vaši práci ocení například majitelé notebooků, kteří nemají po ruce myš a s touchpadem si příliš nerozumí.
Toolbar
Jakmile máte veškeré objekty seskupené v Action Editoru nastavené dle vašeho přání, přejděte k vytvoření toolbaru. Stačí přetáhnout libovolnou položku na požadované místo v toolbaru, který se automaticky nachází pod menu. O správném postupu vás okamžitě ubezpečí přidělená ikonka.
Zdrojový kód
Další postup již není nijak náročný. Stačí jen získat údaje z obou line editů, provést součet a výsledek nastavit jako text patřičnému labelu. Nezapomeňte rovněž propojit oba signály. Povšimněte si obzvláště slotu close(), který se postará o hladké ukončení programu. Nezapomeňte rovněž zajistit zobrazení výsledku získaného během průběhu secti() po kliknutí na Sečíst v menu.
#include „hlavniokno.h“
#include „ui_hlavniokno.h“
#include
#include
HlavniOkno::HlavniOkno(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::HlavniOkno)
{
ui->setupUi(this);
setWindowTitle(„Menu“);
QIntValidator *val;
val = new QIntValidator(this);
ui->le_prvni->setValidator(val);
ui->le_druhe->setValidator(val);
connect(ui->action_Secist,SIGNAL(triggered()),this,SLOT(secti()));
connect(ui->action_Konec,SIGNAL(triggered()),this,SLOT(close()));
}
HlavniOkno::~HlavniOkno()
{
delete ui;
}
void HlavniOkno::secti(){
int prvni,druhe,vysledek;
QString pom;
prvni = ui->le_prvni->text().toInt();
druhe = ui->le_druhe->text().toInt();
vysledek = prvni + druhe;
ui->l_vysledek->setText(pom.setNum(vysledek));
}
#ifndef HLAVNIOKNO_H
#define HLAVNIOKNO_H
#include
namespace Ui {
class HlavniOkno;
}
class HlavniOkno : public QMainWindow
{
Q_OBJECT
public:
explicit HlavniOkno(QWidget *parent = 0);
~HlavniOkno();
private:
Ui::HlavniOkno *ui;
public slots:
void secti();
};
#endif // HLAVNIOKNO_H