Na ovoj stranici

Utils::MacroExpander Class

class Utils::MacroExpander

Klas Qt Creator upravlja širokim varijablama koje korisnik može unijeti u mnoge nizove. 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 koristiti samo 7-bitni ASCII bez posebnih znakova i praznih znakova.

Ako postoji više varijabli koje sadrže različite aspekte istog objekta, uobičajeno je dati im isti prefiks, nakon kojeg slijedi dvotočja 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 konfiguracija je 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 pristupu, razmislite dvaput. Mnogo je učinkovitije jednostavno izravno pitati dodatak koji 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 "Providing Variable Values": umjesto pozivanja MacroExpander::value("MyVariable"), puno 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 expanders". 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štenje MacroExpander::expandedString(). Ovo je najpraktičniji način za dobivanje niza s proširenim vrijednostima varijabli, ali i najmanje fleksibilan. Ako vam to odgovara, 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 poštujući pravila citiranja 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 makro-ekspander koji unutar sebe poziva makro-ekspander upravitelja varijabli. A zatim izvršiti jednu od navedenih radnji. To vam omogućuje proširivanje dodatnih "lokalnih" varijabli/makronaredbi koje 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 s istim prefix om, koje kao vrijednost imaju datoteku. Uzima prefiks i registrira varijable poput prefix:FilePath i prefix:Path, s opisima koji započinju navedenim heading om. Na primjer, registerFileVariables("CurrentDocument", Tr::tr("Current Document")) registrira varijable poput CurrentDocument:FilePath s opisom "Trenutni dokument: puna putanja 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)

Obavještava upravitelja varijabli o zadanoj integralno vrijednoj variable i, zajedno s lokaliziranim description om.

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 se zadana niz-vrijednost prefix -a učita u upravitelja varijabli, zajedno s lokaliziranim description-om. 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 primit će kao ulaz potpuno 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 stvarno proširena.

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)

Pridružuje zadanu niz-vrijednosnu variable upravitelju varijabli, zajedno s lokaliziranim description om.

value StringFunction poziva se za dohvaćanje trenutačne vrijednosti varijable. Prikazuje se korisnicima ako je visibleInChooser true . Postavite availableForExpansion na false ako varijabla treba biti samo dokumentirana, ali ne i zapravo proširena.

Vidi također registerFileVariables(), registerIntVariable(), i registerPrefix().

QString MacroExpander::value(const QByteArray &variable, bool *found = nullptr) const

Vraća vrijednost zadane variable. Ako se navede 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.