Özel sinyaller ve bunları gerektiği gibi yayar. Basit veya karmaşık veriler, genellikle veriler için erişim sağlayıcıları temin ederim. Karmaşık durumda, o zaman, accepted
sinyaline bir yuva bağlar ve istenen bilgiyi o yuvaya alırdım. Bunun dezavantajı genellikle, diyaloğa bir işaretçiyi saklamaya ya da yuvanın hangi nesnenin tetiklendiğini bulmak için sender()
hack'in kullanılmasına güvenmeniz gerektiğidir.
void Foo::showDialog()
{
if (!m_dlg)
{
m_dlg = new Dialog(this);
connect(m_dlg, SIGNAL(accepted()), SLOT(onDialogAccepted()));
}
m_dlg->Setup(m_bar, m_bat, m_baz);
m_dlg->show();
}
void Foo::onDialogAccepted()
{
m_bar = m_dlg->bar();
m_bat = m_dlg->bat();
m_baz = m_dlg->baz();
// optionally destroy m_dlg here.
}
Bu, iletişim kipliyse, doğrudur ... Benim durumumda, ama sadece bunu modal olmayan bir iletişimde nasıl yaparsınız diye düşünüyordum. İletişim kutusunun kabul edilen sinyalini, yukarıdakiyle aynı şeyi yaptığınız bir yuvaya bağladım. – teukkam
Yani, 'accept()' yuvasından özel bir sinyal göndermeye gerek yok. 'Connect' sinyali uygun olanı gibi görünüyor. – tibur