Sinyalleri yuvalara bağlamak için, bildiğim kadarıyla sinyal parametrelerinin yuva parametrelerine uygun olması gerekir. Yani, örneğin:Sinyalleri sabit değerlere sahip yuvalara bağlayın
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(closeDockWidget()));
Ama bir sinyal çağrısı parametrelerinin farklı bir miktar olan bir yuva var, ama her zaman yuvaya sabit bir değer geçmek istiyorsan ne. düğmesine basıldığında
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(setDockWidget(false)));
Veya başka bir deyişle
, yanlış parametresetDockWidget()
işlevini çağırır: Örneğin, yukarıdaki kod parçası kullanılarak. Mümkün mü?
Bu yanıt artık geçerli değil, çünkü C++ 11'deki Qt5 sözdizimi bu amaç için bir lambda kullanmayı oldukça kolaylaştırıyor. –
@ André, Diğer tarafta ise, sadece istediğinizi arayacak olan vekil yuva yaratabilirsiniz. Artık yerinde – Lol4t0
yapabilirsiniz. Ancak, ekstra bir yuva, istemediğiniz başlıkta daha fazla şey ifade etmekte, dışarıdan gelen çağrılara (evet, özel bir yuva dışarıdan çağrılabiliyorsa bile) ve kodunuzun etrafını birden fazla yere yaymaktadır. Geçmek istediğiniz değerleri içerecek şekilde ek üye değişkenlerine gereksiniminiz olabilir, böylece sınıfınızda ek durum eklenebilir. Lambda çözümü çok daha zariftir ve bir çözüm IMO'su olarak bir proxy yuvasının girişini diskalifiye eder. –