Article View: pl.comp.lang.c
Article #309773Re: C++, Qt, Pluginy
From: szykcech
Date: Sun, 30 Dec 2018 13:17
Date: Sun, 30 Dec 2018 13:17
17 lines
3485 bytes
3485 bytes
W dniu niedziela, 30 grudnia 2018 09:58:04 UTC+1 użytkownik Borneq napisał: > W dniu 29.12.2018 o 13:02, szykcech@gmail.com pisze: > > Program jest modułowy składa się z małego exe, kilku bibliotek i 2 pluginów (na początek). Pluginy są ładowane dynamicznie (jednak na starcie programu) przewidywane jest ich włączanie i wyłączanie wg uznania (ze zwalnianiem pamięci a nie jedynie ukrywanie). > > > > W pluginie libTextEditorPluginD.so mam funkcjonalność pojedynczego edytora (zawiera on fabrykę obiektów edytora z których każdy składa się z kontrolki (ang. widget) zawierającego właściwy edytor (dziedziczący po QPlainTextEdit) - jest to wygodne i rozwijalne gdyby np. komuś zamarzyło się kiedyś dodawanie nowych elementów takich jak pasek przycisków funkcyjnych czy panel wyszukiwania i zamiany. > > > > W pluginie libSyntaxHighlighterPluginD.so mam funkcjonalność kolorowania składni oraz korekty pisowni (wynika to z tego, że nie może być 2 obiektów kolorujących podłączonych do jednego edytora QPlainTextEdit). > > Pluginy tworzy się za pomocą wybrania opcji Qt plugin > http://doc.qt.io/qt-5/plugins-howto.html > czy też są to niezależne, dynamiczne biblioteki, czy Qt wspiera je jakoś? Tak to są normalne dynamiczne biblioteki o standardowym interfejsie używanym przez Qt. Ma to 2 zalety: + plik Json opisuje Ci plugin i można ten plik (json z biblioteki współdzielonej) pobrać bez ładowania całego pluginu. Ma to znaczenie np. w Qt Creatorze który w całości opiera się na pluginach i są między nimi zależności (wersje). Nawet mimo, że wszystkie te pluginy i tak są przygotowywane przez Qt i kompilowane razem z całym Qt Creatorem - ale formalnie jest furtka dla niezależnych programistów którzy chcieli by dodać swój zamknięty plugin (lub taki którego nie chce Qt). + plugin udostępnia standardowy interfejs - ładuje określoną klasę która pełni rolę fabryki obiektów dla obiektów udostępnianych przez plugin. Poza tym możesz tworzyć standardowe biblioteki współdzielone ładowane na starcie programu.
Technical Details
Message-ID:
<876c6b1d-b6aa-4d68-afca-5edb6a29612f@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!v55no5165790qtk.0!news-out.google.com!m21ni8639qta.0!nntp.google.com!v55no5165780qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<38ca6860-de3a-49ff-8fb1-88b49056dd25@googlegroups.com> <q0a1ar$198$1@node2.news.atman.pl>Show Full Headers
Complete Article Headers
X-Received: by 2002:a0c:931c:: with SMTP id d28mr25331752qvd.13.1546175877933; Sun, 30 Dec 2018 05:17:57 -0800 (PST) X-Received: by 2002:a81:450:: with SMTP id 77mr380679ywe.6.1546175877762; Sun, 30 Dec 2018 05:17:57 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!v55no5165790qtk.0!news-out.google.com!m21ni8639qta.0!nntp.google.com!v55no5165780qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Sun, 30 Dec 2018 05:17:57 -0800 (PST) In-Reply-To: <q0a1ar$198$1@node2.news.atman.pl> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=188.147.38.106; posting-account=pyti1AoAAAAf66c003TUy10QAAnMWaKw NNTP-Posting-Host: 188.147.38.106 References: <38ca6860-de3a-49ff-8fb1-88b49056dd25@googlegroups.com> <q0a1ar$198$1@node2.news.atman.pl> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <876c6b1d-b6aa-4d68-afca-5edb6a29612f@googlegroups.com> Subject: Re: C++, Qt, Pluginy From: szykcech@gmail.com Injection-Date: Sun, 30 Dec 2018 13:17:57 +0000 Lines: 42 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit