Ho esaminato le domande correlate e non ho trovato nulla che riguardasse esattamente ciò di cui stavo parlando, quindi lasciatemi descrivere.In Qt, come si usano gli slot Q_OBJECT e i segnali con ereditarietà multipla?
Ho una classe, diciamo foo che deve avere i propri slot e segnali, ma deve anche ereditare da QXmlDefaultHandler (sembra piuttosto strano, ma ho riscontrato questa situazione quando provavo a usare QHttp per leggere un sito web direttamente in un QBuffer).
class foo: public QXmlDefaultHandler, public QObject
{
public:
foo();
~foo();
Q_OBJECT
public slots:
void bar();
}
Questo codice, se accompagnato da un cpp per collegare la barra a un segnale da qualche altra parte, non verrà compilato. Riceverai errori su alcuni membri di QObject che non sono membri di QXmlDefaultHandler. Inoltre, non è possibile spostare Q_OBJECT o si ottengono errori vtable per non implementare alcune cose (vai avanti! Prova!).
vedere la mia risposta per la (molto semplice) correzione. Mi divertirò a votarti come risposta accettata se penso che lo spieghi meglio di me.
modifica: per i veterinari C++ e Qt, si prega di inviare una risposta se è possibile spiegarlo meglio. Ho passato un po 'di tempo a cercare queste informazioni, quindi per favore aiuta qualcun altro se puoi fare meglio di me.