Qt signals and slots for newbies/tr: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:NasilYapilir]]<br />[[Category:Qt_Ile_Gelistirme::Genel]]<br />[[Category:Ogreticiler]]
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
 
[[Category:NasilYapilir]]
[[Category:Qt_Ile_Gelistirme::Genel]]
[[Category:Ogreticiler]]


'''Türkçe''' [[How-to-use-signals-and-slots|English]]
'''Türkçe''' [[How-to-use-signals-and-slots|English]]
Line 11: Line 15:
Slot ise bu durumun tam tersidir. Yani bir sinyal oluştuğunda çalışacak hali hazırda ki bir fonksiyonda olabilir, içeriği tarafımızca doldurulacak bir fonksiyonda olabilir. Bu hemen aklınızı karıştırmasın hali hazırda derken, eğer bir liste kutusunu boşaltacaksanız, zaten hali hazırda clear fonksiyonunu bir slot olarak çağırarak liste kutusunu boşaltabilirsiniz. Tabi bunu kendi belirlediğimiz bir fonksiyonu çağırarak onun içinde de sildirebiliriz. Hemen bir slot için kod örneği verelim.
Slot ise bu durumun tam tersidir. Yani bir sinyal oluştuğunda çalışacak hali hazırda ki bir fonksiyonda olabilir, içeriği tarafımızca doldurulacak bir fonksiyonda olabilir. Bu hemen aklınızı karıştırmasın hali hazırda derken, eğer bir liste kutusunu boşaltacaksanız, zaten hali hazırda clear fonksiyonunu bir slot olarak çağırarak liste kutusunu boşaltabilirsiniz. Tabi bunu kendi belirlediğimiz bir fonksiyonu çağırarak onun içinde de sildirebiliriz. Hemen bir slot için kod örneği verelim.


<code>…<br />connect(buton1, SIGNAL (clicked()), liste1, SLOT (clear()));<br />…</code>
<code>…
connect(buton1, SIGNAL (clicked()), liste1, SLOT (clear()));
…</code>


Burada gördüğünüz gibi buton1 nesnesinin tıklanma olayını direk olarak liste1 nesnesinin clear fonksiyonuna bağlayarak ayrıca bir fonksiyon oluşturup oradan çağırmak zorunda kalmadık. Tabi bunu ayrıca yapmamız da mümkündü. Örneğin,
Burada gördüğünüz gibi buton1 nesnesinin tıklanma olayını direk olarak liste1 nesnesinin clear fonksiyonuna bağlayarak ayrıca bir fonksiyon oluşturup oradan çağırmak zorunda kalmadık. Tabi bunu ayrıca yapmamız da mümkündü. Örneğin,


<code><br /><br />connect(button1, SIGNAL (clicked()), App, SLOT (button1_click()));<br />
<code>
connect(button1, SIGNAL (clicked()), App, SLOT (button1_click()));


App::button1_click() {<br />liste1.clear();<br />}</code>
App::button1_click() {
liste1.clear();
}</code>

Latest revision as of 04:32, 22 April 2016

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

Türkçe English

Giriş

Qt üzerinde bulunan Sinyal ve Slot mantığı aslına bakarsanız oldukça basit bir ikilidir. Bu şuna benzer, bir sinyal gönder ve bir slot karşılasın.

Bunu biraz daha açıklayıcı bir şekilde anlatalım. Bir buton düşünün ve siz onun üzerine tıkladınız. Bu durumda bir sinyal oluşur, hatta fareyi butonun üzerine götürdüğünüzde bile oluşur. Ancak her oluşan sinyali değil istediğimiz sinyal bizi ilgilendirmektedir. Butona tıkladığımızda oluşan sinyal için birşeyler yapmamız gerektiğini düşünüyorsak işte çözüm şudur ki, bir slota bu sinyali göndermek! Evet sinyal bir olayın oluştuğunu belirten güzel bir tetikleyicidir. Bu sadece UI üzerindeki bir buton değil bir e-posta gönderiminin tamamlanması gibi arkaplanda ki işlerde dahi oluşur. Ancak oluşan bu bir çok sinyal bizim için bir mana ifade etmeyebilir. Üretilen sinyallerden istediğimizi belirlemek ve bunun karşısında birşeyler yapmamız gerekebilir.

Slot ise bu durumun tam tersidir. Yani bir sinyal oluştuğunda çalışacak hali hazırda ki bir fonksiyonda olabilir, içeriği tarafımızca doldurulacak bir fonksiyonda olabilir. Bu hemen aklınızı karıştırmasın hali hazırda derken, eğer bir liste kutusunu boşaltacaksanız, zaten hali hazırda clear fonksiyonunu bir slot olarak çağırarak liste kutusunu boşaltabilirsiniz. Tabi bunu kendi belirlediğimiz bir fonksiyonu çağırarak onun içinde de sildirebiliriz. Hemen bir slot için kod örneği verelim.


connect(buton1, SIGNAL (clicked()), liste1, SLOT (clear()));

Burada gördüğünüz gibi buton1 nesnesinin tıklanma olayını direk olarak liste1 nesnesinin clear fonksiyonuna bağlayarak ayrıca bir fonksiyon oluşturup oradan çağırmak zorunda kalmadık. Tabi bunu ayrıca yapmamız da mümkündü. Örneğin,


connect(button1, SIGNAL (clicked()), App, SLOT (button1_click()));


App::button1_click() {
liste1.clear();
}