Na ovoj stranici

Core::IFindFilter Class

class Core::IFindFilter

Klas Edit je osnovna klasa za implementacije pretraživanja koje se pozivaju odabirom na > 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 zahtijeva od korisnika da unese tekstualni pojam za pretraživanje (potencijalno s oznakama za pretraživanje kao što je osjetljivost na velika i mala slova ili korištenje 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 svoj opseg pretraživanja, morate 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 po datotekama, 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 okvirom za pretraživanje ( 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 zajednički način za korisnika.

Uobičajeni obrazac je otprilike sljedeći: prvo se implementira stvarno pretraživanje unutar funkcije temeljene na QtConcurrent. 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 (moguće u blokovima) putem future.reportResult.

Search Results U funkciji find() ili replaceAll() filtra za pronalaženje dohvatite zajednički prozor za pronalaženje, 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 vrati rezultate pretraživanja, te ih dodajte u zajednički prozor Search Results.

Dokumentacija funkcija članova

[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 unaprijed odabranim ovim filtrom ili opsegom.

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 niz koji se može prevesti. To jest, za vrijednost povrata upotrijebite Tr::tr().

[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 pronalaženja " enabled ".

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

Ova se funkcija poziva kada je korisnik odabrao ovaj opseg pretraživanja i pokrenuo pretraživanje.

Trebali biste pokrenuti nit koja zapravo izvršava 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 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 u mogućnosti odabrati ovaj filtar za pronalaženje.

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 pretraživanja podržava pretraživanje i zamjenu.

Zadana vrijednost je false, prepišite ovu funkciju da vrati true ako vaš filtar 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 izvodi 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 skladišta s. Postavke koje nisu prisutne u skladištu trebaju se vratiti na zadano. Zadana implementacija ne radi ništa.

Vidi također save().

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

Vraća Store s postavkama filtra za pronalaženje za pohranu u sesiji. Zadane vrijednosti ne bi se smjele spremati. Zadana implementacija vraća prazan Store.

Vidi također restore().

[virtual] bool IFindFilter::showSearchTermInput() const

Vraća je li find filter želi prikazati linijski uređivač 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 polje za unos pojma za pretraživanje.

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

Vraća zastavice pretraživanja, poput cjelovitih 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 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.