Wt: Sistem Sinyal/Slot
Untuk merespons event interaktivitas pengguna, atau secara umum untuk mengomunikasikan event dari satu widget ke widget lainnya, Wt menggunakan sistem sinyal/slot. Slot adalah metode apa pun dari turunan WObject. Untuk menghubungkan sinyal dengan slot, satu-satunya persyaratan adalah tanda tangan metode slot harus kompatibel dengan definisi sinyal. Dengan cara ini setiap metode dapat digunakan sebagai slot, dan tidak perlu secara eksplisit menunjukkan metode tertentu sebagai slot (seperti yang diperlukan di Qt), dengan menempatkannya di bagian khusus. Meskipun demikian, Anda tetap dapat melakukannya jika ingin menekankan bahwa fungsi-fungsi ini dapat digunakan sebagai slot, atau jika Anda telah melakukan pekerjaan ekstra untuk mengoptimalkan implementasi metode-metode ini sebagai kode JavaScript sisi klien (lihat di bawah).
Sinyal dapat dibuat dengan menambahkan objek Signal<...> ke kelas Anda. Anda dapat menentukan hingga 6 argumen yang dapat bertipe arbitrer yang bersifat Copyable, yang dapat diteruskan melalui sinyal ke slot yang terhubung.
Pustaka ini mendefinisikan beberapa sinyal event pengguna pada berbagai widget, dan sangat mudah dan nyaman untuk menambahkan sinyal dan slot ke kelas widget untuk mengomunikasikan event dan memicu callback.
Event sinyal (EventSignal) adalah sinyal yang dapat dipicu secara internal oleh pustaka untuk merespons event interaktivitas pengguna. Kelas dasar abstrak WInteractWidget dan WFormWidget mendefinisikan sebagian besar sinyal event ini. Untuk bereaksi terhadap salah satu event ini, programmer menghubungkan slot yang ditentukan sendiri atau yang sudah ada ke sinyal tersebut.
Untuk menghubungkan sinyal dari beberapa pengirim ke satu slot, kami merekomendasikan penggunaan std::bind() untuk mengidentifikasi pengirim (atau sebaliknya tujuan) dari sinyal.
Contoh penggunaan:
std::vector<Wt::WPushButton*> buttons = ...;
for(unsigned i = 0; i < buttons(); ++i) {
buttons[i]->clicked().connect(std::bind(&Keyboard::handleClick, i));
}
void Keyboard::handleClick(int i) {
t->setText(WString("Anda menekan tombol {1}").args(i));
}Kelas
Wt::SignalBase- Kelas dasar abstrak dari sebuah sinyal.
Wt::EventSignalBase- Kelas dasar abstrak dari sebuah sinyal event.
Wt::WMouseEvent- Kelas yang menyediakan detail untuk event mouse.
Wt::WKeyEvent- Kelas yang menyediakan detail untuk event keyboard.
Wt::WDropEvent- Kelas yang menyediakan detail untuk event drop.
Wt::WScrollEvent- Kelas yang menyediakan detail untuk event scroll.
Wt::WTouchEvent- Kelas yang menyediakan detail untuk event sentuhan.
Wt::WGestureEvent- Kelas yang menyediakan detail untuk event gesture.
Wt::JSignal< A >- Sinyal untuk menyampaikan panggilan JavaScript ke C++.
Wt::JSlot- Slot yang hanya diimplementasikan dalam kode JavaScript sisi klien.
Wt::WObject- Kelas dasar untuk objek yang berpartisipasi dalam sistem sinyal/slot.
Wt::Signal< A >- Sinyal yang menyebarkan event ke pendengar.
Wt::EventSignal< E >- Sinyal yang menyampaikan event antarmuka pengguna.
Enumerasi
Enumerasi untuk kode tombol. Berikut adalah kode tombol yang mengidentifikasi tombol pada keyboard. Semua tombol yang tercantum dapat diidentifikasi di semua browser dan keyboard (Barat). Sebuah Key dikembalikan oleh WKeyEvent::key(). Jika Anda ingin mengidentifikasi karakter, Anda harus menggunakan metode WKeyEvent::charCode() sebagai gantinya. Lihat juga WInteractWidget::keyWentDown dan WInteractWidget::keyWentUp.
| Enumerator | Deskripsi |
|---|---|
| Unknown | Kunci tidak dikenal. |
| Enter | Tombol Enter. |
| Tab | Tombol Tab. |
| Backspace | Tombol Backspace. |
| Shift | Tombol Shift. |
| Control | Tombol Control. |
| Alt | Tombol Alt. |
| PageUp | Tombol Page Up. |
| PageDown | Tombol Page Down. |
| End | Tombol End. |
| Home | Tombol Home. |
| Left | Tombol Panah Kiri. |
| Up | Tombol Panah Atas. |
| Right | Tombol Panah Kanan. |
| Down | Tombol Panah Bawah. |
| Insert | Tombol Insert. |
| Delete | Tombol Delete. |
| Escape | Tombol Escape. |
| F1 | Tombol fungsi F1. |
| F2 | Tombol fungsi F2. |
| F3 | Tombol fungsi F3. |
| F4 | Tombol fungsi F4. |
| F5 | Tombol fungsi F5. |
| F6 | Tombol fungsi F6. |
| F7 | Tombol fungsi F7. |
| F8 | Tombol fungsi F8. |
| F9 | Tombol fungsi F9. |
| F10 | Tombol fungsi F10. |
| F11 | Tombol fungsi F11. |
| F12 | Tombol fungsi F12. |
| Space | Spasi. |
| A | Tombol 'A' |
| B | Tombol 'B' |
| C | Tombol 'C' |
| D | Tombol 'D' |
| E | Tombol 'E' |
| F | Tombol 'F' |
| G | Tombol 'G' |
| H | Tombol 'H' |
| I | Tombol 'I' |
| J | Tombol 'J' |
| K | Tombol 'K' |
| L | Tombol 'L' |
| M | Tombol 'M' |
| N | Tombol 'N' |
| O | Tombol 'O' |
| P | Tombol 'P' |
| Q | Tombol 'Q' |
| R | Tombol 'R' |
| S | Tombol 'S' |
| T | Tombol 'T' |
| U | Tombol 'U' |
| V | Tombol 'V' |
| W | Tombol 'W' |
| X | Tombol 'X' |
| Y | Tombol 'Y' |
| Z | Tombol 'Z' |
| Key_1 | Tombol '1' |
| Key_2 | Tombol '2' |
| Key_3 | Tombol '3' |
| Key_4 | Tombol '4' |
| Key_5 | Tombol '5' |
| Key_6 | Tombol '6' |
| Key_7 | Tombol '7' |
| Key_8 | Tombol '8' |
| Key_9 | Tombol '9' |
| Key_0 | Tombol '0' |
Enumerasi untuk pengubah keyboard. Lihat juga WMouseEvent::modifiers() dan WKeyEvent::modifiers().
| Enumerator | Deskripsi |
|---|---|
| None | Tidak ada pengubah. |
| Shift | Tombol Shift ditekan. |
| Control | Tombol Control ditekan. |
| Alt | Tombol Alt ditekan. |
| Meta | Tombol Meta ditekan (tombol "Windows" atau "Command" (Mac)). |