SORU
15 NİSAN 2012, Pazar


Kullanma vs Qt düzenli bir fonksiyonu olarak bir sinyal yayarlar arıyorum

Ben sadece son zamanlarda yayarlar Qt anahtar kelime öğrendi. Şimdiye kadar, sadece normal bir fonksiyon gibi onları arayarak sinyalleri çalıştırmak için kullanılır. Yani: yerine

emit progressNotification(1000 * seconds);

Yazmak istiyorum:

progressNotification(1000 * seconds);

İşe yaramış görünüyor, ve bağlı tüm yuva, yani yayan anahtar kullanarak farklı bir davranışı neden yapar yürütmek gibi onları çağıran, yoksa sadece sözdizimsel şeker?

CEVAP
15 NİSAN 2012, Pazar


emit sadece sözdizimsel şeker. Eğer bir sinyal yayan bir işlev önceden işlenmiş çıkış bakarsanız, emit sadece gitmiş olduğunu göreceksiniz.

"Sihirli" C kodu moc tarafından oluşturulan inceleyerek bakabilirsiniz sinyal yayan işlevi için oluşturulan kodda olur.

Örneğin, herhangi bir parametre ile foo sinyal bu üye işlev oluşturur:

void W::foo()
{
    QMetaObject::activate(this, &staticMetaObject, 0, 0);
}

10 ** kodu önceden işlenmiş sadece 11**

emit Qt/qobjectdefs.h (kaynak açık kaynak kodlu lezzet zaten) olarak tanımlanır:

#ifndef QT_NO_EMIT
# define emit
#endif

(Define gardiyan no_keywords QMake yapılandırma seçeneği ile isim çarpışması olan diğer çerçeveler ile Qt kullanmak için izin vermektir.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Klemens Torggler

    Klemens Torg

    11 Mart 2008