Utils::MacroExpander Class
class Utils::MacroExpanderKlasa MacroExpander upravlja širom varijablama ( Qt Creator ), koje korisnik može unijeti u mnoge nizove postavki. Varijable se zamjenjuju stvarnom vrijednošću kada se niz koristi, slično načinu na koji se varijable okruženja proširuju u shellu. Više...
| Header: | #include <MacroExpander> |
Javne funkcije
| QString | expand(const QString &stringWithVariables) const |
| void | registerFileVariables(const QByteArray &prefix, const QString &heading, const Utils::MacroExpander::FileFunction &base, bool visibleInChooser = true, bool availableForExpansion = true) |
| void | registerIntVariable(const QByteArray &variable, const QString &description, const Utils::MacroExpander::IntFunction &value) |
| void | registerPrefix(const QByteArray &prefix, const QByteArray &examplePostfix, const QString &description, const Utils::MacroExpander::PrefixFunction &value, bool visible = true, bool availableForExpansion = true) |
| void | registerVariable(const QByteArray &variable, const QString &description, const Utils::MacroExpander::StringFunction &value, bool visibleInChooser = true, bool availableForExpansion = true) |
| QString | value(const QByteArray &variable, bool *found = nullptr) const |
| QString | variableDescription(const QByteArray &variable) const |
| QList<QByteArray> | visibleVariables() const |
Detaljan opis
Varijable
Nazivi varijabli mogu biti u osnovi bilo koji niz bez znaka dolara i zagrada, iako se preporučuje korištenje samo 7-bitnog ASCII-ja bez posebnih znakova i razmaka.
Ako postoji više varijabli koje sadrže različite aspekte istog objekta, uobičajeno je da imaju isti prefiks, nakon kojeg slijedi dvotočkica i sufiks koji opisuje aspekt. Primjeri toga su CurrentDocument:FilePath i CurrentDocument:Selection.
Kada se od upravitelja varijabli zatraži zamjena varijabli u nizu, on traži nazive varijabli okružene znakovima %{ i }, poput %{CurrentDocument:FilePath}.
Promjenjive okruženja dostupne su pomoću notacije %{Env:...}. Na primjer, za pristup promjenjivoj okruženja SHELL upotrijebite %{Env:SHELL}.
Napomena: Imena varijabli pohranjuju se kao QByteArray. Obično su 7-bitno čista. U slučajevima kada to nije moguće, pretpostavlja se UTF-8 kodiranje.
Postavljanje vrijednosti varijabli
Dodaci mogu registrirati varijable zajedno s opisom pomoću registerVariable(). Tipična je postavka registrirati varijable u funkciji Plugin::initialize().
void MyPlugin::initialize() { [...] MacroExpander::registerVariable( "MyVariable", Tr::tr("The current value of whatever I want.")); [] { QString value; // do whatever is necessary to retrieve the value [...] return value; } ); [...] }
Za varijable koje se odnose na datoteku trebali biste koristiti praktičnu funkciju MacroExpander::registerFileVariables(). Funkcije prihvaćaju prefiks varijable, poput MyFileVariable, i automatski obrađuju standardizirane sufikse poput :FilePath, :Path i :FileBaseName, što rezultira kombiniranim varijablama, kao što je MyFileVariable:FilePath.
Pružanje i proširivanje parametriziranih nizova
Iako je moguće jednostavno zatražiti od upravitelja varijabli vrijednost neke varijable u vašem kodu, poželjniji je slučaj upotrebe pružiti korisniku mogućnost parametrizacije nizova, na primjer za postavke.
(Ako ikada razmišljate o prvom rješenju, razmislite dvaput. Mnogo je učinkovitije jednostavno pitati dodatak koji izravno pruža vrijednost varijable, bez pretvaranja nizova i korištenja upravitelja varijablama koji će izvršiti opsežno ispitivanje. Da budemo konkretniji, koristeći primjer iz odjeljka Pružanje vrijednosti varijablama: umjesto pozivanja MacroExpander::value("MyVariable"), mnogo je učinkovitije jednostavno izravno pitati pomoću MyPlugin::variableValue().)
Korisničko sučelje
Ako je niz koji želite parametrizirati postavljiv od strane korisnika, putem klase naslijeđene od QLineEdit ili QTextEdit, trebali biste dodati odabirač varijabli u svoj korisnički sučelje, koji omogućuje dodavanje varijabli nizu pregledavanjem popisa. Za više detalja pogledajte Utils::VariableChooser.
Proširivanje nizova
Proširivanje vrijednosti varijabli u nizovima vrše "macro expanderi". Utils::AbstractMacroExpander je temeljna klasa za njih, a upravitelj varijablama pruža implementaciju koja proširuje varijable Qt Creator putem MacroExpander::macroExpander().
Postoji nekoliko različitih načina za proširenje niza, koji pokrivaju različite slučajeve upotrebe, a ovdje su navedeni poredani prema relevantnosti:
- Korištenjem MacroExpander::expandedString(). Ovo je najpraktičniji način za dobivanje niza s proširenim vrijednostima varijabli, ali i najmanje fleksibilan. Ako vam je to dovoljno, koristite ga.
- Korištenje funkcija Utils::expandMacros(). One uzimaju niz i makro ekspandor (za koji biste koristili onaj koji pruža upravitelj varijabli). Uglavnom su iste kao MacroExpander::expandedString(), ali imaju i varijantu koja vrši zamjenu inlinu umjesto da vraća novi niz.
- Korištenje funkcije Utils::CommandLine::expandMacros(). Ona proširuje niz, pritom se pridržavajući pravila za navodnike platforme na kojoj se izvršava. Koristite ovu funkciju s proširivačem makronaredbi upravitelja varijabli ako će se vaš niz proslijediti kao niz parametara naredbenog retka vanjskoj naredbi.
- Napisati vlastiti macro expander koji unutar sebe poziva macro expander upravitelja varijabli. A zatim izvršiti jednu od gore navedenih radnji. To vam omogućuje proširivanje dodatnih "lokalnih" varijabli/makronova koji ne dolaze od upravitelja varijabli.
Dokumentacija funkcija člana
QString MacroExpander::expand(const QString &stringWithVariables) const
Vraća stringWithVariables sa svim promjenjivima zamijenjenima njihovim vrijednostima. Pogledajte preglednu dokumentaciju za MacroExpander za druge načine proširivanja promjenjivih.
Vidi također MacroExpander.
void MacroExpander::registerFileVariables(const QByteArray &prefix, const QString &heading, const Utils::MacroExpander::FileFunction &base, bool visibleInChooser = true, bool availableForExpansion = true)
Pomoćna funkcija za registraciju više varijabli sa istim prefix om, koje imaju datoteku kao vrijednost. Uzima prefiks i registrira varijable poput prefix:FilePath i prefix:Path, s opisima koji počinju zadatim heading om. Na primjer, registerFileVariables("CurrentDocument", Tr::tr("Current Document")) registrira varijable poput CurrentDocument:FilePath s opisom "Trenutni dokument: puni put uključujući naziv datoteke."
Prima funkciju koja vraća FilePath kao base.
Varijabla se prikazuje korisnicima ako je visibleInChooser true . Postavite availableForExpansion na false ako varijabla treba biti samo dokumentirana, ali ne i zapravo proširena.
Vidi također registerVariable(), registerIntVariable(), i registerPrefix().
void MacroExpander::registerIntVariable(const QByteArray &variable, const QString &description, const Utils::MacroExpander::IntFunction &value)
Omogućuje da se zadani integralni variable, zajedno s lokaliziranim description, učita u upravljač varijabli.
value IntFunction poziva se za dohvaćanje trenutne vrijednosti varijable.
Vidi također registerVariable(), registerFileVariables(), i registerPrefix().
void MacroExpander::registerPrefix(const QByteArray &prefix, const QByteArray &examplePostfix, const QString &description, const Utils::MacroExpander::PrefixFunction &value, bool visible = true, bool availableForExpansion = true)
Omogućuje da navedeni niz znakova s vrijednošću prefix bude poznat upravitelju varijabli, zajedno s lokaliziranim description. Navedite primjer vrijednosti nakon prefiksa u examplePostfix. To se koristi za prikaz proširenog primjera u odabiraču varijabli.
value i PrefixFunction bit će pozvani i kao ulaz će dobiti puno ime varijable s uklonjenim prefiksom. Prikazuju se korisnicima ako je visible true . Postavite availableForExpansion na false ako varijabla treba biti samo dokumentirana, ali ne i zapravo razrađena.
Vidi također registerVariable(), registerIntVariable(), i registerFileVariables().
void MacroExpander::registerVariable(const QByteArray &variable, const QString &description, const Utils::MacroExpander::StringFunction &value, bool visibleInChooser = true, bool availableForExpansion = true)
Omogućuje da zadana variable s vrijednošću niza bude poznata upravitelju varijabli, zajedno s lokaliziranim description om.
value StringFunction poziva se za dohvaćanje trenutne vrijednosti varijable. Prikazuje se korisnicima ako je visibleInChooser true . Postavite availableForExpansion na false ako varijabla treba biti samo dokumentirana, ali ne i zapravo razrađena.
Vidi također registerFileVariables(), registerIntVariable(), i registerPrefix().
QString MacroExpander::value(const QByteArray &variable, bool *found = nullptr) const
Vraća vrijednost zadane variable. Ako je zadana found, ona se postavlja na true ako varijabla uopće ima vrijednost, a na false ako nema.
QString MacroExpander::variableDescription(const QByteArray &variable) const
Vraća opis koji je registriran za variable.
QList<QByteArray> MacroExpander::visibleVariables() const
Vraća sva registrirana imena varijabli.
Vidi također registerVariable() i registerFileVariables()
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.