🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309773

Re: C++, Qt, Pluginy

#309773
From: szykcech
Date: Sun, 30 Dec 2018 13:17
17 lines
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-mail
References: <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