Na ovoj stranici

Core::IFindFilter Class

class Core::IFindFilter

Klasa IFindFilter je osnovna klasa za implementacije pronalaženja koje se pozivaju odabirom na Edit > Find/Replace > Advanced Find. Više...

Header: #include <coreplugin/find/ifindfilter.h>
Inherits: QObject

Javne funkcije

virtual QWidget *createConfigWidget()
virtual QKeySequence defaultShortcut() const
virtual QString displayName() const = 0
virtual void findAll(const QString &txt, Utils::FindFlags findFlags) = 0
virtual QString id() const = 0
virtual bool isEnabled() const = 0
virtual bool isReplaceSupported() const
virtual bool isValid() const
virtual void replaceAll(const QString &txt, Utils::FindFlags findFlags)
virtual void restore(const Utils::Store &s)
virtual Utils::Store save() const
virtual bool showSearchTermInput() const
virtual Utils::FindFlags supportedFindFlags() const

Signali

void displayNameChanged()
void enabledChanged(bool enabled)
void validChanged(bool valid)

Statični javni članovi

const QList<Core::IFindFilter *> allFindFilters()
QString descriptionForFindFlags(Utils::FindFlags flags)
QPixmap pixmapForFindFlags(Utils::FindFlags flags)

Detaljan opis

Implementacije ove klase dodaju dodatni Scope u dijalog Advanced Find. To može biti bilo koja pretraga koja od korisnika zahtijeva unos teksta za pretraživanje (potencijalno s opcijama pretraživanja poput osjetljivosti na velika i mala slova ili korištenja regularnih izraza). Postojeći opsezi su All Projects koji pretražuje sve datoteke u svim projektima i Files in File System gdje korisnik navodi direktorij i obrasce datoteka za pretraživanje.

Prikaz rezultata pretraživanja s kriterijima pretraživanja

Da biste korisniku omogućili vaš opseg pretraživanja, trebate implementirati ovu klasu i registrirati instancu svoje podklase u upravitelju dodataka.

Uobičajen način za prikaz rezultata pretraživanja korisniku je korištenje zajedničke ploče Search Results.

Prikaz rezultata pretraživanja s rezultatima pretraživanja

Ako želite implementirati filtar za pretraživanje koji vrši pretraživanje teksta na temelju datoteka, trebali biste koristiti Core::BaseTextFind, koji već implementira sve detalje za ovu vrstu pretraživanja, a od vas se traži samo da pružite iterator nad imenima datoteka koje treba pretražiti.

Ako želite implementirati specijaliziraniji filtar za pronalaženje, trebate:

  • Pokrenite pretraživanje u zasebnom niti
  • Obavijestite o tome Core::ProgressManager, kako biste omogućili traku napretka i mogućnost otkazivanja pretraživanja
  • Interfejs s zajedničkim oknom za Search Results, za prikaz rezultata pretraživanja, obradu događaja kada korisnik klikne na jedan od rezultata pretraživanja i moguću obradu globalne zamjene svih ili nekih od rezultata pretraživanja.

Srećom, QtConcurrent i okno s rezultatima pretraživanja pružaju okvire koji to čine relativno jednostavnim za implementaciju, istovremeno osiguravajući ujednačen način rada za korisnika.

Uobičajeni obrazac je otprilike sljedeći: prvo se implementira stvarno pretraživanje unutar funkcije temeljene na QtConcurrentu. To je funkcija koja kao prvi parametar prima QFutureInterface<MySearchResult> &future, a ostale informacije potrebne za pretraživanje kao dodatne parametre. Trebala bi postavljati korisne informacije o napretku na QFutureInterface, redovito provjeravati future.isPaused() i future.isCanceled() te izvještavati o rezultatima pretraživanja (po mogućnosti u blokovima) putem future.reportResult.

U funkciji find() ili replaceAll() filtera za pretraživanje dohvatite zajednički prozor Search Results, pokrenite novo pretraživanje i povežite signale za obradu odabira rezultata i akcije zamjene (za detalje pogledajte klasu Core::SearchResultWindow ). Pokrenite implementaciju pretraživanja putem odgovarajućih funkcija QtConcurrent. Dodajte vraćeni objekt QFuture u Core::ProgressManager. Koristite QFutureWatcher na vraćenom objektu QFuture kako biste primili signal kada vaša implementacija pretraživanja prijavi rezultate pretraživanja, te ih dodajte u zajednički prozor Search Results.

Dokumentacija članovskih funkcija

[static] const QList<Core::IFindFilter *> IFindFilter::allFindFilters()

Vraća popis filtara za pronalaženje.

[virtual] QWidget *IFindFilter::createConfigWidget()

Vraća widget koji sadrži dodatne kontrole za opcije ovog filtra za pretraživanje.

Advanced Find Widget će biti prikazan ispod uobičajenih opcija u dijalogu za pronalaženje. Widget će biti ponovno pridružen i izbrisan od strane dodatka za pronalaženje.

[virtual] QKeySequence IFindFilter::defaultShortcut() const

Vraća prečac koji se može koristiti za otvaranje dijaloga naprednog pretraživanja s ovim filtrom ili opsegom unaprijed odabranim.

Ovdje se obično vraća prazna prečaca, no korisnik i dalje može odabrati i dodijeliti specifičnu prečacu za ovaj opseg pretraživanja putem postavki.

[static] QString IFindFilter::descriptionForFindFlags(Utils::FindFlags flags)

Vraća opisne tekstualne oznake za zastavice pretraživanja flags.

[pure virtual] QString IFindFilter::displayName() const

Vraća naziv filtra za pronalaženje ili opsega kako je prikazan korisniku.

Ovo je naziv koji se, na primjer, pojavljuje u padajućem izborniku za odabir opsega. Uvijek vratite prevodivu niz. To jest, koristite Tr::tr() kao vrijednost povrata.

[signal] void IFindFilter::displayNameChanged()

Ovaj signal se emitira kada se promijeni prikazano ime ovog filtra za pronalaženje.

[signal] void IFindFilter::enabledChanged(bool enabled)

Ovaj signal se emitira kada se promijeni stanje filtra pronalaska " enabled ".

[pure virtual] void IFindFilter::findAll(const QString &txt, Utils::FindFlags findFlags)

Ova se funkcija poziva kada korisnik odabere ovaj opseg pretraživanja i pokrene pretraživanje.

Trebali biste pokrenuti nit koja zapravo obavlja pretraživanje za txt koristeći zadani findFlags (dodajte ga u Core::ProgressManager za traku napretka) i prikazuje rezultate pretraživanja korisniku (koristeći izlazni prozor Search Results ). Za više informacija pogledajte opise ove klase, Core::ProgressManager i Core::SearchResultWindow.

Vidi također replaceAll(), Core::ProgressManager i Core::SearchResultWindow.

[pure virtual] QString IFindFilter::id() const

Vraća jedinstveni string identifikator za ovaj filtar za pronalaženje.

Obično bi trebao biti nešto poput "MyPlugin.MyFindFilter".

[pure virtual] bool IFindFilter::isEnabled() const

Vraća je li korisnik u ovom trenutku mogao odabrati ovaj filtar za pretraživanje.

Ovo se, na primjer, koristi za opseg Current Projects. Ako korisnik nije otvorio projekt, opseg je onemogućen.

Vidi također enabledChanged().

[virtual] bool IFindFilter::isReplaceSupported() const

Vraća je li filtar za pretraživanje podržan za pretraživanje i zamjenu.

Zadana vrijednost je false, prepišite ovu funkciju kako bi vraćala true, ako vaš filter za pronalaženje podržava globalno pretraživanje i zamjenu.

[virtual] bool IFindFilter::isValid() const

Vraća da li je filtar za pronalaženje valjan.

Vidi također validChanged().

[static] QPixmap IFindFilter::pixmapForFindFlags(Utils::FindFlags flags)

Vraća ikone za oznake pretraživanja flags.

[virtual] void IFindFilter::replaceAll(const QString &txt, Utils::FindFlags findFlags)

Prepišite ovu funkciju ako želite podržati pretraživanje i zamjenu.

Ova se funkcija poziva kada korisnik odabere ovaj opseg pretraživanja i pokrene pretraživanje i zamjenu. Zadana implementacija ne radi ništa.

Trebali biste pokrenuti nit koja zapravo provodi pretraživanje za txt koristeći zadani findFlags (dodajte ga u Core::ProgressManager za indikator napretka) i prikazuje rezultate pretraživanja korisniku (koristeći izlazni prozor Search Results ). Za više informacija pogledajte opise ove klase, Core::ProgressManager i Core::SearchResultWindow.

Vidi također findAll(), Core::ProgressManager i Core::SearchResultWindow.

[virtual] void IFindFilter::restore(const Utils::Store &s)

Obnavlja postavke filtra za pretraživanje iz trgovine s. Postavke koje nisu prisutne u trgovini trebale bi se vratiti na zadano. Zadana implementacija ne radi ništa.

Vidi također save().

[virtual] Utils::Store IFindFilter::save() const

Vraća spremište s postavkama filtra za pronalaženje za pohranu u sesiji. Zadane vrijednosti ne bi smjele biti spremljene. Zadana implementacija vraća prazno spremište.

Vidi također restore().

[virtual] bool IFindFilter::showSearchTermInput() const

Vraća hoće li find filter željeti prikazati linijsku izmenu za pojam za pretraživanje.

Zadana vrijednost je true. Prepišite ovu funkciju tako da vraća false ako vaš filtar za pretraživanje ne želi prikazati liniju za uređivanje pojma za pretraživanje.

[virtual] Utils::FindFlags IFindFilter::supportedFindFlags() const

Vraća zastavice pretraživanja, poput cijelih riječi ili regularnih izraza, koje ovaj filtar pretraživanja podržava.

Ovisno o vraćenoj vrijednosti, zadani widgeti za opcije pretraživanja se omogućuju ili onemogućuju. Zadano su to Utils::FindCaseSensitively, Utils::FindRegularExpression i Uitls::FindWholeWords.

[signal] void IFindFilter::validChanged(bool valid)

Ovaj signal se emitira kada se promijeni stanje filtra pronalaska " valid ".

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.