Monitor / Output Emetted Qt-Segnali
-
21-12-2019 - |
Domanda
Ho definito alcuni segnali che vengono emessi in diverse occasioni:
signals:
void buttonXClicked(int x);
void numButtonsChanged(int num);
.
Ora vorrei solo vedere come sono questi segnali e se i parametri sono corretti. Sembra che ci siano diversi approcci per monitorare i segnali.
in post qui Rohanpm si riferisce al parametro -vs
che è specificato qui:
http:// qt-project. org / doc / qt-4.8 / qtestlib-manual.html # qttestlib-riga-riga-argomenti
Questo sembra essere un modo elegante e rapido per ottenere le informazioni che richiedono.
Ma ad essere sincero, non riesco a capire come e dove devo eseguire -vs
. Non fa parte del qmake
. Dove altro devo metterlo? (Sono abbastanza nuovo per qt).
relativo a qsignalspy Sembra essere necessario cambiare Le classi esistenti? Non c'è anche un approccio "esterno"?
C'è molta documentazione su come testare uno slot - ma correlato ai segnali? Potrei usare un printf
o cout
da qualche parte?
Soluzione
Ho ricevuto questa idea mentre leggendo di più sul moc e sulla sua funzionalità.(Almeno mentre si utilizza NetBeans) ottengo ulteriori al mio file buttontst.cpp il file moc_buttentest.cpp.All'interno è un metodo chiamato:
// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
.
Non riuscivo a credere che fosse così facile ma ho appena aggiunto un
std::cout <<"buttonXClicked: "<<_t1;
.
E sembra fare esattamente quello che voglio.
Altri suggerimenti
Come scrive la documentazione collegata:
.Esegue la funzione Test TOUPPER con tutti i dati di test disponibili, e la funzione Test Tint con il testData chiamato zero (se i dati di test specificati non esistono, il test associato fallirà).
/myTestDirectory$ testMyWidget -vs -eventdelay 500
.
Dove TESTMYWIDGET è il test binario di prova.Ecco la documentazione -vs
:
.-vs Emette ogni segnale che viene emesso
C'è anche qualche ulteriore documentazione se vieni l'output della Guida:
/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted
.
Se ti capita di avere problemi con la scrittura dei test dell'unità basata su QTestLib
, questo è un buon punto di partenza per te con QT 4: