# &kde-frameworks;: KDesignerPlugin

`kgendesignerplugin`

1

`kgendesignerplugin`

Genera estensioni di oggetti per &Qt; Designer.

    kgendesignerplugin OPZIONI file

## Descrizione

Le estensioni per oggetti personalizzati di &Qt; Designer seguono solitamente uno schema predefinito, e le classi fornite dall'estensione forniscono per lo più informazioni statiche, oltre alla funzione per creare un'istanza, che è normalmente una semplice chiamata a un costruttore. `kgendesignerplugin` permette agli sviluppatori di librerie di fornire nuovi oggetti per creare una tale estensione senza creare tutto il codice di routine, ma fornendo invece un semplice file descrittivo in stile ini.

`kgendesignerplugin` sceglie valori predefiniti ragionevoli per la maggior parte delle impostazioni, per cui normalmente è necessaria solo una configurazione minimale.

## Opzioni

`-o `file``

- Il nome per il file C++ generato. Se non viene fornito, verrà usato `stdout`.

`-n `nome-estensione``

- Disponibile per compatibilità. Il valore predefinito per l'opzione PluginName nel file di input.

`-g `gruppo``

- Disponibile per compatibilità. Il valore predefinito per l'opzione DefaultGroup nel file di input.

`--author`

- Mostra le informazioni sull'autore.

`--license`

- Mostra le informazioni sulla licenza.

`-h, --help`

- Mostra un breve testo di aiuto.

`-v , --version`

- Mostra le informazioni sulla versione.

## Formato dei file

Il file di input è un file di configurazione di tipo INI (in particolare, è nel formato supportato dal framework KConfig) che descrive un insieme di oggetti. Contiene una sezione `[Global]`, che fornisce informazioni generali sull'estensione, ed una sezione per ogni oggetto che deve essere incluso nell'estensione.

La sezione `[Global]` può avere le seguenti voci:

`DefaultGroup`

- Il valore predefinito per la voce `Group` nelle sezioni delle classi (valore predefinito: "`Custom`", a meno che l'opzione `-g` non sia stata fornita).

`Includes`

- Un elenco (separato da virgole) di file da includere richiesti (valore predefinito: vuoto). Nota come i file di intestazione per gli oggetti specificati successivamente nel file non vanno elencati qui; questo elenco è per le intestazioni speciali usate internamente dall'estensione, come quelli per le classi che forniscono le anteprime.

`PluginName`

- Il nome della classe C++ principale nell'estensione (valore predefinito: "`WidgetsPlugin`", a meno che l'opzione `-n` non sia stata specificata).

Ogni classe dovrebbe avere la propria sezione `[`ClassName`]`, che può includere le seguenti voci:

`CodeTemplate`

- Il valore restituito dalla funzione `codeTemplate()` dell'estensione, che è segnata per "uso futuro" da &Qt; Designer (predefinito: vuoto).

`ConstructorArgs`

- Gli argomenti da passare al costruttore della classe fornito da `ImplClass`: questi devono essere racchiusi tra parentesi (valore predefinito: `(parent)`). L'unica variabile di cui è garantita la presenza è `parent`, che è l'oggetto `QWidget` genitore passato da &Qt; Designer.

  Questa voce è ignorata se `CreateWidget` è impostato.

`CreateWidget`

- Il codice necessario per creare un'istanza dell'oggetto (comportamento predefinito: usa `new` per creare un'istanza della classe specificata dalla voce `ImplClass`, passando gli argomenti specificati da `ConstructorArgs`). Consultare le note per `ImplClass` e `ConstructorArgs`.

`DomXML`

- Una descrizione &XML; UI dell'oggetto (valore predefinito: quanto fornito dalle intestazioni dell'estensione per &Qt; Designer).

`Group`

- Il gruppo in cui mostrare l'oggetto in &Qt; Designer (valore predefinito: il valore della voce `DefaultGroup` nella sezione `[Global]`).

`IconName`

- Il file di immagine o il nome standard di icona da usare come icona per questo oggetto nell'elenco degli oggetti di &Qt; Designer (valore predefinito: un file PNG chiamato come il nome della sezione ma senza doppi due punti, nella directory «pics» di un file di risorse integrato; ad esempio, `:/pics/Foo.png` nella sezione `[Foo]`, o `:/pics/FooBar.png` nella sezione `[Foo::Bar]`).

`ImplClass`

- La classe che dovrebbe essere usata per creare un'istanza dell'oggetto per l'uso in &Qt; Designer (valore predefinito: il nome della sezione). Si noti come questa non deve essere necessariamente la classe che verrebbe creata per l'applicazione finale: questo viene stabilito dal valore di `DomXML`.

  Questa voce è ignorata se `CreateWidget` è impostato.

`IncludeFile`

- L'intestazione che è necessario includere per usare questo oggetto (valore predefinito: la versione in minuscolo del nome della sezione, con i due punti rimossi e «.h» aggiunto alla fine; ad esempio, `foo.h` nella sezione `[Foo]`, o `foobar.h` nella sezione `[Foo::Bar]`).

`IsContainer`

- Se questo oggetto possa contenerne altri (valore predefinito: `false`).

`ToolTip`

- Il suggerimento da mostrare quando il mouse passa sull'oggetto nell'elenco degli oggetti di &Qt; Designer (valore predefinito: il nome della sezione, con « Widget» aggiunto alla fine; ad esempio `Foo Widget` nella sezione `[Foo]`).

`WhatsThis`

- Il testo «Che cos'è» associato all'oggetto in &Qt; Designer (valore predefinito: il nome della sezione, con « Widget» aggiunto alla fine; ad esempio, `Foo Widget` nella sezione `[Foo]`).

## Esempi

Il file di descrizione più semplice potrebbe somigliare a:

    [Foo]
    ToolTip=Mostra foo
    [Bar]
    ToolTip=Editor di qualcosa

Si noti come ogni classe debba avere almeno una chiave impostata (in questo esempio è stata usata `ToolTip`), altrimenti la classe verrà ignorata.

Normalmente vorrai cambiare almeno il testo visibile all'utente, che vuol dire le voci `ToolTip`, `WhatsThis` e `Group`. Inoltre, impostare il nome dell'estensione può essere una buona idea per prevenire possibili conflitti di simboli e non confondere i debugger (sia l'applicazione debugger che la persona che effettua il debug):

    [Global]
    PluginName=FooWidgets
    DefaultGroup=Display

    [Foo]
    ToolTip=Mostra orsi
    WhatsThis=Un'oggetto immagine che mostra orsi danzanti

    [Bar]
    ToolTip=Editor qualcosa
    WhatsThis=Un'interfaccia editor per qualcosa per orsi
    Group=Editing

Dei file più complessi potrebbero essere necessari se ci fossero classi con namespace oppure opzioni aggiuntive che debbano essere fornite ai costruttori, ad esempio:

    [Global]
    PluginName=FooWidgets
    DefaultGroup=Foo

    [Foo::Bar]
    ToolTip=Mostra qualcosa
    WhatsThis=Un oggetto che mostra qualcosa in modo peculiare
    IncludeFile=foo/bar.h
    IconName=:/previews/bar.png

    [Foo::Baz]
    IncludeFile=foo/baz.h
    ConstructorArgs=(Foo::Baz::SomeOption, parent)
    Group=Foo (Special)
    IsContainer=true
    IconName=:/previews/baz.png

A volte degli oggetti particolarmente complessi potrebbero aver bisogno di un'implementazione di una speciale «classe di anteprima» per l'uso in &Qt; Designer; questa potrebbe essere una sottoclasse di un vero oggetto che esegue delle inizializzazioni aggiuntive, o potrebbe essere un'implementazione completamente diversa.

    [Global]
    Includes=foopreviews.h

    [FancyWidget]
    ImplClass=FancyWidgetPreview

## Vedi anche

https://doc.qt.io/qt-5/designer-creating-custom-widgets.html

- La documentazione di &Qt; Designer sulla creazione di estensioni per oggetti personalizzati.

## Errori

Usa il sito di gestione dei bug di &kde; per segnalarli, non mandare un messaggio direttamente agli autori.