2012-02-26 6 views
6

La parte di qt creator per la progettazione di qt ha molti widget incorporati. Ma diciamo che voglio aggiungere widget personalizzati creati nello stesso progetto qt al file ui della finestra. Prendendo questi passaggi:Aggiunta di widget creati dall'utente a un file ui in qt creator

  1. Creare una nuova applicazione GUI Qt con una finestra principale, che chiameremo la finestra A.
  2. Aggiungi un nuovo widget per il progetto, il widget utilizza solo componenti di interfaccia utente standard, dire pulsanti. Chiameremo questo widget di B.
  3. Aggiungere un'istanza del widget di B per la finestra A.

Ora, so che un modo per farlo, e cioè:

  1. Nella finestra di A , aggiungere un widget vuoto (o widget di container, dalla sezione contenitori della lista dei possibili widget. chiameremo questo widget di C.
  2. promuoverlo (widget di C) al widget di B.

Tuttavia,il problema con questo è che il designer di Qt Creator lo tratta come un QWidget generico. E come tale, non puoi fare cose come aggiungerlo a uno splitter o connettere segnali/slot specifici del widget.

Quindi esistono altri modi per aggiungere il widget B alla finestra A nel file ui utilizzando qt creator? Grazie.

+2

È possibile creare widget personalizzati per designer: http://developer.qt.nokia.com/doc/qt-4.8/designer-creating-custom-widgets.html – Lol4t0

+0

Hmm..it sembra che ho seguito questa procedura , chiunque voglia modificare questo progetto dovrebbe installare il plugin separatamente, sì? Preferirei preferibilmente averlo dove il progetto può essere aperto da solo senza installare un plugin, se è possibile. –

+0

@LeifAndersen Questo non richiede che il plugin apra il progetto, solo per vedere e interagire con il nuovo widget. A seconda del progetto e del team, un deposito centrale per i plug-in potrebbe essere una possibilità; è quello che fa la nostra compagnia. Non conosco altre opzioni oltre a queste, comunque. –

risposta

1

Non sono sicuro di aver capito bene la tua domanda in modo da poter fare la domanda sbagliata. Sei sicuro che il tuo widget "B" sia una sottoclasse di QDesignerCustomWidgetInterface? Questo dovrebbe esporre tutto ciò che il tuo widget/plugin offre ...

Ultima nota: un mio amico ha provato ad aggiungere un widget personalizzato come te. E alla fine della procedura descritta che Lol4t0 ti ha detto, ti ha trovato deve compilare il plugin con lo stesso compilatore con cui è stato compilato qtcreator/designer. Ciò accade perché, come sappiamo, C++ non mantiene la compatibilità ABI (invece del linguaggio C) come: La gestione dei nomi può cambiare da compilatore a compilatore, come i dati caricati nei registri possono cambiare ... e così via. Il mio amico ha provato a compilare plugin con mingw, ma ha scoperto che qtcreator è stato compilato con il compilatore di Visual Studio. Quindi se vuoi installare il tuo plugin su Windows o compilare il tuo plugin con visual studio, o devi compilare qtcreator/designer da zero.