Tôi đang khái quát hóa qua một vài thư viện GUI nhưng ở mức độ rất cao, khái niệm quan trọng nhất mà bạn cần hiểu là GUI được điều khiển theo sự kiện .
Trong một ứng dụng giao diện điều khiển, đầu vào người dùng của bạn thường xảy ra tại một số điểm nhất định mà bạn đã xác định. Bạn nhắc người dùng của bạn, bạn đợi đầu vào của anh ta, bạn tính toán một cái gì đó dựa trên đầu vào đó. Một trong những khác biệt chính là đầu vào chỉ xảy ra ở một nơi, bạn đang đọc văn bản từ dòng lệnh ( stdin
trong C ++).
Trong một ứng dụng GUI, bạn thường có nhiều vị trí có thể xảy ra đầu vào, ví dụ các nút thực hiện các hành động hoặc trường văn bản khác nhau. Đây là nơi các sự kiện diễn ra. Ví dụ, nhấp vào nút kích hoạt một sự kiện. Sự kiện này cần được xử lý bởi một bộ xử lý sự kiện , thường chỉ là một phương thức lấy một đối tượng sự kiện và được gọi khi một số chẵn như vậy được kích hoạt. Làm thế nào để nút của bạn biết về xử lý sự kiện? Bạn thường đăng ký (hoặc nghe nó).
Dưới đây là một ví dụ "lấy cảm hứng từ C ++", đây không phải là mã QT hoặc C ++ thực tế.
class MyClickHandler : public ClickListener{
void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");
}
};
Khi bạn tạo Nút, bạn đăng ký phiên bản của lớp MyClickHandler dựa vào nút.
...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...
Bây giờ mỗi khi Nút b
được nhấp, một hộp thông báo sẽ hiển thị "Nút Lưu đã được nhấp".
Bạn có thể tưởng tượng một ứng dụng GUI có hai giai đoạn:
- Thiết lập GUI: Một khoảng thời gian ngắn khi khởi động, trong đó tất cả các đối tượng được tạo và kết nối với nhau.
- Các vòng lặp sự kiện : GUI của bạn là trong một lớn trong khi vòng lặp và chỉ được ngồi đó chạy không tải cho đến khi một sự kiện được kích hoạt.
Đây là một ví dụ rất đơn giản, nhưng tôi muốn giới thiệu với bất kỳ khung nào bạn chọn, hãy thử hiển thị hộp thông báo khi nhấp vào nút.
Đối với khuôn khổ, có rất nhiều trong số họ ngoài kia: Trong trường hợp của C ++, tôi có thể muốn giới thiệu Qt.
Một lời khuyên cuối cùng: Tránh xa các nhà thiết kế GUI cho đến khi bạn thực sự biết những gì đang xảy ra trong nền. Không khó để viết một số ví dụ đơn giản và để hiểu vòng lặp sự kiện trước và sau đó chuyển sang bố cục phức tạp hơn.