Сигналдар мен слоттар - Signals and slots

Сигналдар мен слоттар тілдік құрылым болып табылады Qt[1] іске асыруды жеңілдететін объектілер арасындағы байланыс үшін бақылаушы үлгісі болдырмау кезінде қазандық коды. Тұжырымдама - бұл GUI виджеттер слоттар деп аталатын арнайы функцияларды қолдана отырып, басқа виджеттер / басқару элементтері ала алатын оқиға туралы ақпараты бар сигналдарды жібере алады. Бұл C / C ++ функциясының көрсеткіштеріне ұқсас, бірақ сигнал / слот жүйесі кері байланыс аргументтерінің типінің дұрыстығын қамтамасыз етеді.[дәйексөз қажет ]

Сигнал / слот жүйесі бұл жолға сәйкес келеді графикалық интерфейстер жобаланған.[дәйексөз қажет ] Сол сияқты, сигнал / слот жүйесі GUI-ді қолданбау үшін де қолданыла алады, мысалы асинхронды енгізу / шығару (розеткаларды, құбырларды, сериялық құрылғыларды және т.б. қоса алғанда) оқиғалар туралы хабарлама немесе күту уақыты оқиғаларын тиісті объект даналары мен әдістерімен немесе функцияларымен байланыстыру. Оны пайдалану оңай, сондықтан тіркеу / тіркеуден шығару / шақыру кодын жазудың қажеті жоқ, өйткені Qt метаобъект құрастырушысы (MOC) қажетті инфрақұрылымды автоматты түрде жасайды.

Жалпы метафора[кімге сәйкес? ] электрондық кесте. Электрондық кестеде бастапқы ұяшықтарды бақылаушы ұяшықтар бар. Бастапқы ұяшық өзгертілгенде, тәуелді ұяшықтар оқиғадан жаңартылады.

Баламалы іске асырулар

Сигналдық / слоттық жүйелердің кейбір енгізілімдері бар C ++ сияқты Qt пайдаланатын қосымша метаобъект компиляторын қажет етпейтін шаблондар libsigc ++, sigslot, vdk-сигналдары, нано-сигнал ұясы, neosigslot, Сигналдар, 2. сигналдар, Синапс, Cpp :: Оқиғалар, Платина және JBroadcaster. Жалпы тілдік инфрақұрылым (CLI) сияқты тілдер C # сонымен қатар басқа құрылымды қолдайды, бірақ басқа терминологиясы мен синтаксисі бар: оқиғалар сигналдардың рөлін атқарады, және делегаттар слоттар. Сигналдардың тағы бір іске асырылуы бар ActionScript 3.0, Qt оқиғалары мен сигналдары / слоттарынан шабыттанған Qt. Сонымен қатар, делегат а сияқты жергілікті айнымалы бола алады функция көрсеткіші, ал Qt-дағы слот сол сияқты жарияланған класс мүшесі болуы керек. C негізіндегі GObject жүйесі ұқсас функцияларды ұсынады GSignal.D-де оны жүзеге асырады сигналдар.

Сондай-ақ қараңыз

Кітапханалар

Java: sig4j - негізделген, көп бұрандалы, типтік қауіпсіз Функционалдық интерфейс аннотация Java 8-де енгізілген.

C ++: vdk-сигналдары - қауіпсіз, типке қауіпсіз, атомдық айнымалылармен C ++ 11 тілінде жазылған.

Әдебиеттер тізімі

  1. ^ «Сигналдар мен слоттар - QtCore 5.1». Qt жобасы. 2013-07-04. Алынған 2013-07-04.