18 মাস পরে ... আমি @ ম্যাট এর উত্তরে মন্তব্য দিয়ে শুরু করেছি এবং দ্রুত ঘর থেকে বেরিয়ে এসেছি। এইভাবে উত্তর।
আইএমও emit
কোনও সিনট্যাকটিক চিনির মতো নয় বা এই অর্থে কোনও সাধারণ কীওয়ার্ড নয়
- এটি কোড উত্পন্ন করে (উপরে @ ম্যাট দ্বারা ব্যাখ্যা হিসাবে),
- এটি
connect
প্রক্রিয়াটি বুঝতে সাহায্য করে যে সত্যই এটি একটি signal
, এবং
- এটি আপনার সিগন্যালটিকে একটি "বৃহত্তর" সিস্টেমের অংশে পরিণত করে, যেখানে সংকেতটি কোথায় এবং কীভাবে নির্গমন হয়েছিল তার উপর নির্ভর করে সংকেত এবং প্রতিক্রিয়াগুলি (স্লট) একযোগে বা অবিচ্ছিন্নভাবে কার্যকর করা যেতে পারে বা সারি করা যেতে পারে। এটি সিগন্যাল / স্লট সিস্টেমের একটি অত্যন্ত দরকারী বৈশিষ্ট্য।
পুরো সিগন্যাল / স্লট সিস্টেমটি সাধারণ ফাংশন কলের চেয়ে আলাদা আইডিয়াম। আমি বিশ্বাস করি এটি পর্যবেক্ষক নিদর্শন থেকে উদ্ভূত। এখানে একটা মধ্যবর্তী একটি প্রধান পার্থক্য নেই signal
এবং slot
: একটি সংকেত নেই , বাস্তবায়ন হবে যেহেতু একটি স্লট হতে হবে !
আপনি রাস্তায় হাঁটছেন এবং একটি ঘর আগুনে দেখছেন (একটি সংকেত)। আপনি 911 ডায়াল করুন ( 911 প্রতিক্রিয়া স্লটের সাথে ফায়ার সিগন্যালটি সংযুক্ত করুন )। সংকেতটি কেবলমাত্র নির্গত হয়েছিল , যেখানে স্লটটি ফায়ার বিভাগ দ্বারা প্রয়োগ করা হয়েছিল । অসম্পূর্ণ হতে পারে, তবে আপনি ধারণা পেতে পারেন। ওপির উদাহরণটি দেখি।
কিছু ব্যাকএন্ড অবজেক্ট জানে কত অগ্রগতি হয়েছে। সুতরাং এটি কেবল emit progressNotification(...)
সংকেত পারে । এই সংকেতটি তুলে নেওয়ার জন্য এটি চালিয়ে যাওয়া প্রকৃত অগ্রগতি বারটি প্রদর্শন করে class তবে দৃশ্যটি এই সংকেতের সাথে কীভাবে সংযুক্ত হবে? Qt এর সিগন্যাল / স্লট সিস্টেমে আপনাকে স্বাগতম। এখন কোনও পরিচালক শ্রেণি (সাধারণত ধরণের উইজেট) ধারণ করতে পারে, যা একটি ভিউ অবজেক্ট এবং ডেটা গণনা অবজেক্ট (উভয়ই সত্তা QObjects
) নিয়ে গঠিত হতে পারে connect (m_myDataEngine, &DataEngine::progressNotification, m_myViewObj, &SimpleView::displayProgress)
।
আসুন ম্যানেজার শ্রেণির নকশার দিকগুলিতে notুকে পড়ুন না, তবে এটি যথেষ্ট বলে দিন যে এখানেই সিগন্যাল / স্লট সিস্টেমটি জ্বলজ্বল করে। আমি আমার অ্যাপ্লিকেশনটির জন্য খুব পরিষ্কার আর্কিটেকচার ডিজাইনের উপর ফোকাস করতে পারি। সবসময় নয়, তবে প্রায়শই আমি খুঁজে পাই যে আমি কেবল সংকেত নিঃসৃত করি তবে স্লট বাস্তবায়ন করি ।
যদি কখনও সিগন্যাল পদ্ধতিটি নির্গমন না করে ব্যবহার করা / কল করা সম্ভব হয় তবে এটি অগত্যা বোঝায় যে আপনার প্রথমে সিগন্যাল হিসাবে সেই ক্রিয়াকলাপটির প্রয়োজন ছিল না ।
emit
যে প্রয়োজন নেই। যদিও এটি আশ্চর্যের বিষয় নয় যে, আপনিemit
সরাসরি সিগন্যাল কল করার পরে দীর্ঘ সম্পর্কে শিখলেন , কেননা সিগন্যাল-স্লট সিস্টেমটি কিউটি সম্পর্কে প্রথম জানা জিনিসগুলির মধ্যে একটি।