Na ovoj stranici

Upravitelj dodataka, bazen objekata i registrirani objekti

Obično C++-plugini ne moraju izravno pristupati upravitelju dodataka. Uglavnom s njim komuniciraju neizravno putem sučelja ExtensionSystem::IPlugin. Ipak, postoje situacije kada je potrebno koristiti API upravitelja dodataka. Plugini moraju pristupiti objektnom spremniku upravitelja dodataka kako bi proširili neke aspekte Qt Creator, na primjer dodavanjem stranica u dijalog opcija. Također mogu iskoristiti objektni spremnik za pružanje točaka proširenja drugim plug-inima.

Upravitelj dodataka

Upravitelj dodataka

Upravitelj dodataka rukuje svim detaljima vezanim uz pronalaženje dodataka, čitanje njihovih datoteka s opisima, rješavanje ovisnosti dodataka, učitavanje i inicijalizaciju svih dodataka u ispravnom redoslijedu te prosljeđivanje argumenata naredbenog retka.

Osim toga, upravitelj dodataka upravlja bazenom objekata, u kojem se objekti mogu registrirati i dohvatiti ovisno o različitim kriterijima.

Većina interakcije dodataka s upraviteljem dodataka trebala bi se odvijati putem sučelja ExtensionSystem::IPlugin, no sljedeće tablice sažimaju neke funkcije i signale koji mogu biti korisni za dodatke. Za potpuni popis pogledajte referentnu dokumentaciju na ExtensionSystem::PluginManager.

FunkcijaOpis
instance()Vraća instancu jedinstvenog upravitelja dodataka, na primjer za povezivanje s signalima.
addObject()Registrira objekt u bazen objekata. Također je dostupan putem ExtensionSystem::IPlugin::addObject().
removeObject()Registrira uklanjanje objekta iz bazena objekata. Također dostupno putem ExtensionSystem::IPlugin::removeObject().
allObjects()Vraća nefiltriranu listu svih objekata registriranih u bazenu objekata.
getObject<T>()Vraća jedan objekt tipa T koji je registriran u objektnom bazenu. Ovo poštuje Aggregation.
getObjectByName(const QString &name)Vraća jedan objekt s navedenim imenom objekta koji je registriran u objektnom spremniku.
SignalOpis
objectAdded(QObject *object)Poslan nakon što je objekt registriran u bazenu objekata.
QObject o uklanjanju objekta iz skupa objekata.Poslan neposredno prije deaktivacije objekta iz bazena objekata.
initializationDone()Pošalje se kada su dodatci pokrenuti i sva odgođena inicijalizacija je dovršena.

Zbirka objekata i registrirani objekti

Plugini mogu registrirati objekte u zajednički bazen kojim upravlja upravitelj dodataka. Objekti u bazenu moraju nasljeđivati od QObject, nema drugih preduvjeta.

Svi objekti određene vrste mogu se dohvatiti iz spremnika objekata putem funkcije getObject(). Ona je svjesna Aggregation::Aggregate i koristi funkciju Aggregation::query() umjesto qobject_cast za određivanje odgovarajućih objekata.

Nefiltriranu listu svih objekata registriranih u objektnom bazenu moguće je dohvatiti putem funkcije allObjects().

Također je moguće dohvatiti objekt s određenim imenom pomoću funkcije xml-ph-0000@deepl.internal() (

Također je moguće dohvatiti objekt s određenim nazivom pomoću funkcije getObjectByName() (vidi QObject::objectName()).

Kad god se promijeni stanje spremnika objekata, upravitelj dodataka emitira odgovarajući signal objectAdded() ili aboutToRemoveObject().

Uobičajeni slučaj upotrebe objektnog bazena jest da dodatak (ili aplikacija) pruži točku proširenja za druge dodatke, koja je klasa koja se može implementirati i dodati u objektni bazen kako bi je mogao dohvatiti dodatak koji je točku pružio. Također je moguće koristiti objektni bazen za omogućavanje pristupa objektu bez stvarnog povezivanja na biblioteku dodatka koji pruža tu točku.

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.