2010-02-08 31 views
5

Sanırım bir yuvaya tıklatılmış() sinyaliyle bağlı bir QPushButton widget'ım var. Bu ilk yuva, sıra anahtar kelimesi tarafından başka bir yuva çağırır. İkinci slot, ilk slottan bir argüman alır ve onunla bir şeyler yapar. Çalıştı, ama sinyal-slot modelinden anladığım kadarıyla, sadece bir sinyal yaymak mantıklı. Sinyal yerine bir yuva çıkarmak yanlış mıdır?Qt - sinyal yerine yuvalar yayar

cevap

8

Emit tanımına bakarsanız, boş olduğunu görebilirsiniz. emit sadece o satırda bir sinyalin yayıldığını belirtmek için kullanılır. Bu nedenle, bir yuva yayan anlamı yoktur.

Yuvalar normal işlevlerdir, bunları açıkça kullanabilirsiniz.

5

Evet. Bir yuva bir işlevdir. C++ doSlotAction(params);'daki diğer işlevler gibi bir yuvayı çağırabilirsiniz. Sadece emit anahtar sözcüğünü takip etmelidir.

+0

Bu yanlış anlam taşır. yaymak aslında bir sinyal göndermenin ve bağlı bir aramanın geri çağrılmasını ifade eder, burada _keyword_ emit hiçbir şey yapmazken sadece daha iyi okunabilirlik için. – drahnr

3

Sadece önceki yanıtları tamamlamak için, sinyaller gerçekten meta-nesne derleyicisi olan moc tarafından uygulanan korunan yöntemlerdir.