PyQt üzerinde bir uygulama geliştiriyorum, sinyal yuvası modelini beğendim, fakat sinyal yayıcıyı belirlemenin herhangi bir yolu var mı? Umarım bir yol vardır, çünkü her benzer sinyal için çok fazla slot tanımlamaksızın daha genel kod yazabilir.Sinyalin kim tarafından verildiği nasıl belirlenir?
cevap
Sanırım çok erken bir soru açtım, çünkü google'a kendimden bir cevap buldum. yuvası yayıcı tarafından aktive edildiğinde , damlatıcının işaretçi saklanır ve
QObject::sender()
tarafından alınabilir ve bunun sonucu olarak tarafından PyQt'de erişilebilir: bu değildir bu
@QtCore.pyqtSlot()
def someSlot(self):
self.sender()
Bu işlevi kullanmadan önce belgelerindeki uyarıdan haberdar olmalısınız: http://doc.qt.nokia.com/4.7/qobject.html#sender –
Patrice işte buradaki link: https: // qt-project .org/doc/qt-4.7/qobject.html # gönderici – neuronet
Not örneğin söyle. Bir ızgara kontrolünde hangi hücreye rastlandı - sadece ızgara kontrolü kendini idare eder.
, ya bir int ilişkilendirmek için bir araç sağlar gibi, QSignalMapper sınıfa bakmak isteyebilirsiniz
yönlendirme gelişmiş sinyal/yuvası hakkında ayrıntılı bir sürü gider hangi yeni Gelişmiş Qt kitap var dışarı string veya widget, belirli bir sinyali gönderen bir nesneye dönüşür. Ana sınırlama, eşleştirilen sinyal/yuvanın parametre-az olması gerektiğidir. QT4.7 documentation den
C++ örnek: Ben basit bir PyQt4 örnek eklemeye çalışacağım bir şans varken
ButtonWidget::ButtonWidget(QStringList texts, QWidget *parent)
: QWidget(parent)
{
signalMapper = new QSignalMapper(this);
QGridLayout *gridLayout = new QGridLayout;
for (int i = 0; i < texts.size(); ++i) {
QPushButton *button = new QPushButton(texts[i]);
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(button, texts[i]);
gridLayout->addWidget(button, i/3, i % 3);
}
connect(signalMapper, SIGNAL(mapped(const QString &)),
this, SIGNAL(clicked(const QString &)));
setLayout(gridLayout);
}
Bununla birlikte, bir PyQt4 örnek here bulabilirsiniz.
- 1. DbContext tarafından kullanılacak tablonun adı nasıl belirlenir
- 2. WP7 Bir Şarkıya nasıl oy verildiği
- 3. elm - bir sinyalin tarihi değeri
- 4. Zaman geçtikçe bir sinyalin integrali nasıl çizilir?
- 5. İplerimi kim keser?
- 6. XCode tarafından kullanılacak anahtarlıkta kimlik tercihi nasıl belirlenir?
- 7. Uygulama kaldırıldığında nasıl belirlenir
- 8. Kim Soket'e C
- 9. Boost ASIO'yu kim kullanıyor?
- 10. Singleton'umu kim görebilir?
- 11. Toplama çerçevesinde tam zaman damgası verildiği zaman nasıl toplanır?
- 12. Bir sinyalin bir hata tetiklenmeden var olup olmadığı nasıl algılanır
- 13. Kim, git-flow'i başarıyla kullanıyor?
- 14. VisualStateManager.GoToState, sahne arkasında kim arıyor?
- 15. Arka plan eylemleri nasıl belirlenir?
- 16. AddIn işlem adları nasıl belirlenir?
- 17. Geçerli giriş dili nasıl belirlenir?
- 18. Sınıflar veya Jar, kim kazanır?
- 19. Otomatik kutulama/kutucukluk kim yapacak?
- 20. Anahtar deyimi kim icat etti?
- 21. Kavram Genişletme hizmetinin yerini kim duydu?
- 22. Eklentinin dizini nasıl belirlenir
- 23. Tuple türleri nasıl belirlenir?
- 24. MongoDB - Diziler nasıl belirlenir?
- 25. ServiceController'den Windows.Diagnostics.Process nasıl belirlenir
- 26. Sunucu konumu nasıl belirlenir?
- 27. Dizi türü nasıl belirlenir?
- 28. Görünümde doubletap nasıl belirlenir?
- 29. Akış sonu nasıl belirlenir?
- 30. MPI_Recv - Sayı nasıl belirlenir?
Birisi, yuvadaki bir gönderici hakkında bilgi gerektiren kodun * daha * jenerik olduğunu söylemesini duyduğuma gerçekten şaşırdım. Genel olarak, yuvalar nasıl yazıldığına dair herhangi bir bilgi gerektirmeyecek şekilde yazılır (yani doğrudan doğruya yöntemler olarak da adlandırılabilir). –