Qt – menu

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.

Qt - menu

Qt - rozbalené menu

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

 

Napsat komentář