Qt Widgets Upute: Qt aplikacija
Ovaj vodič opisuje kako koristiti Qt Creator za izradu male Qt aplikacije, Tekstni pretraživač. To je pojednostavljena verzija primjera Tekstni pretraživač iz Qt UI Tools. Koristit ćete Qt Widgets Designer za izradu korisničkog sučelja aplikacije od Qt kontrola i uređivač koda za pisanje logike aplikacije u C++-u.

Kreira projekt Text Finder
- Idite na File > New Project > Application (Qt) > Qt Widgets Application.

- Odaberite Choose za otvaranje dijaloga Project Location.

- U prozoru Name upišite TextFinder.
- U Create in unesite putanju do datoteka projekta. Na primjer,
C:\Qt\examples. - Odaberite Next (na Windowsu i Linuxu) ili Continue (na macOS-u) kako biste otvorili dijalog Define Build System.

- U Build system-u odaberite CMake kao sustav za izgradnju projekta.
- Odaberite Next ili Continue za otvaranje dijaloga Class Information.

- U Class name upišite TextFinder kao naziv klase.
- U Base class odaberite QWidget kao osnovnu klasu.
Napomena: Header file, Source file i Form file automatski se ažuriraju kako bi odgovarali nazivu klase.
- Odaberite Next ili Continue za otvaranje dijaloga Translation File.

- U Language možete odabrati jezik na koji planirate prevesti aplikaciju. Time se omogućuje podrška za lokalizaciju aplikacije. Druge jezike možete dodati kasnije uređivanjem datoteke projekta.
- Odaberite Next ili Continue za otvaranje dijaloga Kit Selection.

- Odaberite build i run kitove za svoj projekt.
- Odaberite Next ili Continue za otvaranje dijaloga Project Management.

- Pregledajte postavke projekta i odaberite Finish (na Windowsu i Linuxu) ili Done (na macOS-u) za stvaranje projekta.
Napomena: Projekt se otvara u načinu rada Edit, koji skriva ova uputstva. Da biste se vratili na ova uputstva, otvorite način rada Help.
Projekt TextFinder sada ima sljedeće datoteke:
main.cpptextfinder.htextfinder.cpptextfinder.uiCMakeLists.txt

Datoteke .h i .cpp dolaze s potrebnim pripadajućim kôdom.
CMakeLists.txt Ako ste odabrali CMake kao sustav za izgradnju, Qt Creator je za vas stvorio projektnu datoteku za Eclipse.
Popunite nedostajuće dijelove
Počnite s dizajniranjem korisničkog sučelja, a zatim prijeđite na dopunu nedostajućeg koda. Na kraju dodajte funkcionalnost pretraživanja.
Dizajnirajte korisničko sučelje

- U načinu rada Edit dvaput kliknite datoteku
textfinder.uiu prikazu Projects kako biste pokrenuli integrirani Qt Widgets Designer. - Povucite sljedeće widgete na obrazac:
- Label (QLabel)
- Line Edit (QLineEdit)
- Push Button (QPushButton)

Napomena: Za jednostavno pronalaženje widgeta upotrijebite polje za pretraživanje na vrhu Widget Box. Na primjer, da biste pronašli widget Label, počnite upisivati riječ label.

- Dvostruko kliknite widget Label i unesite tekst Keyword.
- Dvaput kliknite na widget Push Button i unesite tekst Find.
- U prikazu Property Editor promijenite objectName u findButton.

- Odaberite Ctrl+A (ili Cmd+A) za odabir widgeta i odaberite Lay out Horizontally (ili pritisnite Ctrl+H na Linuxu ili Windowsu ili Ctrl+Shift+H na macOS-u) za primjenu vodoravnog rasporeda (QHBoxLayout).

- Povucite widget Text Edit (QTextEdit) na obrazac.
- Odaberite područje zaslona, a zatim odaberite Lay out Vertically (ili pritisnite Ctrl+L) kako biste primijenili okomiti raspored (QVBoxLayout).

Primjena vodoravnog i okomitog rasporeda osigurava da se korisničko sučelje aplikacije prilagođava različitim veličinama zaslona.
- Da biste pozvali funkciju pretraživanja kada korisnici odaberu gumb Find, koristite mehanizam Qt signala i slotova. Signal se emitira kada se dogodi određeni događaj, a slot je funkcija koja se poziva kao odgovor na određeni signal. Qt widgeti imaju unaprijed definirane signale i slotove koje možete koristiti izravno iz Qt Widgets Designer. Da biste dodali slot za funkciju pretraživanja:
- Find Desnom tipkom miša kliknite gumb Pronađi da biste otvorili kontekstualni izbornik.
- Odaberite Go to Slot > clicked(), a zatim odaberite OK.
Time se u zaglavnu datoteku
textfinder.hdodaje privatni sloton_findButton_clicked(), a u izvorni kodtextfinder.cppprivatna funkcijaTextFinder::on_findButton_clicked().
- Odaberite Ctrl+S (ili Cmd+S) za spremanje promjena.
Za više informacija o dizajniranju obrazaca pomoću Qt Widgets Designer-a, pogledajte priručnikQt Widgets Designer.
Dovršite glavu datoteke
Datoteka textfinder.h već sadrži potrebne #includes, konstruktor, destruktor i objekt Ui. Potrebno je dodati privatnu funkciju loadTextFile() za čitanje i prikaz sadržaja ulazne tekstualne datoteke u QTextEdit.
- U prikazu Projects u načinu rada Edit dvaput kliknite datoteku
textfinder.hda biste je otvorili za uređivanje. - Dodajte privatnu funkciju u odjeljak
private, nakon pokazivačaUi::TextFinder:private slots: void on_findButton_clicked(); private: Ui::TextFinder *ui; void loadTextFile();
Dovršite izvorni datotek
Sada kada je zaglavna datoteka dovršena, prijeđite na izvorni kod textfinder.cpp.
- U prikazu Projects u načinu rada Edit dvaput kliknite datoteku
textfinder.cppda biste je otvorili za uređivanje. - Dodajte kod za učitavanje tekstualne datoteke pomoću QFile, čitanje pomoću QTextStream i zatim prikazivanje na
textEditpomoću QTextEdit::setPlainText():Za korištenje xml-ph-0000@deepl.internal i xml-ph-0001@deepl.internal dodajte sljedeće #include-ovevoid TextFinder::loadTextFile() { QFile inputFile(":/input.txt"); inputFile.open(QIODevice::ReadOnly); QTextStream in(&inputFile); QString line = in.readAll(); inputFile.close(); ui->textEdit->setPlainText(line); QTextCursor cursor = ui->textEdit->textCursor(); cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1); }
- Za korištenje QFile i QTextStream dodajte sljedeće #include u
textfinder.cpp:#include "./ui_textfinder.h" #include <QFile> #include <QTextStream>
- Za utor
on_findButton_clicked()dodajte kod za izdvajanje niza za pretraživanje i upotrijebite funkciju QTextEdit::find() za pronalaženje niza za pretraživanje unutar tekstualne datoteke:Dodajte liniju za pozivanje xml-ph-0000@deepl.internal u konstruktor:void TextFinder::on_findButton_clicked() { QString searchString = ui->lineEdit->text(); ui->textEdit->find(searchString, QTextDocument::FindWholeWords); }
- Dodajte redak za pozivanje
loadTextFile()u konstruktoru:
Sljedeći redak koda automatski poziva slot on_findButton_clicked() u generiranoj ui_textfinder.h datoteci pomoću uic-a:
QMetaObject::connectSlotsByName(TextFinder);
Stvorite resursnu datoteku
Potrebna vam je resursna datoteka (.qrc) u koju ugrađujete ulaznu tekstualnu datoteku. Ulazna datoteka može biti bilo koja .txt datoteka koja sadrži odlomak teksta. Napravite tekstualnu datoteku naziva input.txt i spremite je u mapu textfinder.
Za dodavanje resursne datoteke:
- Idite na File > New File > Qt > Qt Resource File > Choose.

Otvorit će se dijalog Choose the Location.
U dijaloškom okviru xml-ph-0000@deepl.internal unesite textfinder.
- U dijalogu Name unesite textfinder.
- U dijalogu Path unesite putanju do projekta i odaberite Next ili Continue.
Otvara se dijalog Project Management.

- U Add to project odaberite TextFinder i odaberite Finish ili Done za otvaranje datoteke u uređivaču koda.
- Odaberite Add Prefix.
- U Prefix u zamijenite zadani prefiks crticom (/).
- Odaberite Add Files kako biste pronašli i dodali
input.txt.
Dodajte resurse u datoteku projekta
Da bi se tekstualna datoteka prikazala kada pokrenete aplikaciju, morate navesti datoteku s resursima kao izvorni fajl u datoteci CMakeLists.txt koju je čarobnjak stvorio za vas:
set(PROJECT_SOURCES
main.cpp
textfinder.cpp
textfinder.h
textfinder.ui
${TS_FILES}
textfinder.qrc
)Izgradite i pokrenite svoju aplikaciju
Sada kada imate sve potrebne datoteke, odaberite
(Run) za izgradnju i pokretanje vaše aplikacije.
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.