2012-10-22 11 views
17

Vorrei impostare un numero intero da memorizzare in un QWidget, e penso che la funzione membro setUserData farebbe il trucco ma non riesco a trovare alcuna documentazione. Qualche suggerimento?Come impostare i dati utente per un QWidget?

+3

QObject :: setUserData è contrassegnato come "internal" - è probabilmente consigliabile evitare di utilizzarlo. –

risposta

20

Si potrebbe cercare QObject::setProperty() (che è naturalmente ereditato da QWidget).

+0

È possibile assegnare un oggetto (ad esempio della classe Foo) come una proprietà e recuperarlo quando richiesto, invece di utilizzare solo stringhe, inte o altre proprietà di tipi di dati semplici? – SexyBeast

+0

Non sono sicuro perché non sono un esperto di QT. Ma la soluzione che ho postato sotto di creare un tipo ereditato funzionerebbe sicuramente per un oggetto arbitrario. Sostituire semplicemente "Data" con "Foo". –

12

Non sono un esperto di QT, ma perché non creare solo una classe che eredita da QWidget e ha un numero intero? In questo modo:

class MyDerivedWidget : public QWidget 
{ 
    public: 
    MyDerivedWidget(); 

    private: 
    Data *myUserData; 
}; 

O se ti ostini a usare il setUserData cassa l'ultimo post here.

+0

È, se fai esplicito MyDerivedWidget (QWidget parent = 0) {}, semplice ed efficace, ancora, suona un po 'hacky per me, ma la risposta utile così ho votato, thx. –

+0

IMO, questo è il meno hacky delle due risposte. Se vuoi memorizzare i dati in un QWidget (usando solo una normale struttura), il modo corretto sarebbe di ereditare la classe che desideri, aggiungere più funzionalità e farlo 'giusto'. Atleast ereditando, saresti in grado di aggiungere accessors e il simile per renderlo più utile del semplice passaggio di un QWidget standard con una proprietà casuale aggiuntiva ... – g19fanatic

+6

@ g19fanatic, rispettosamente in disaccordo (e apparentemente i designer della biblioteca sono sul mio lato, altrimenti 'setProperty()' non esisterebbe). A volte può essere molto conveniente avere un semplice "bag of data" associato a un'istanza, senza dover progettare e mantenere un'intera sottoclasse solo per ottenerlo. –

Problemi correlati