So sánh qt quick và qt widget
Qt là Cross-platform Application Framework, xây dựng ứng dụng chạy trên nhiều nền tảng (app desktop, automative device, android device,...). Sử dụng để phát triển các ứng dụng có thể chạy trên các nền tảng phần mềm và phần cứng khác nhau trên cơ sở mã đơn Kiến trúc:Qt có thể chia ra làm hai phần là GUI Design và C++. Qt UI Design đưa ra cho chúng ta 2 lựa chọn là Qt Quick và Qt Widgets. Tùy vào mục đích mà chúng ta sử dụng. Với Qt Quick C++ ở backend, thiết kế giao diện người dùng khai báo (QML) ở front end cho Trải nghiệm người dùng dựa trên cảm ứng đẹp, hiện đại Với Qt Widgets: các điều khiển giao diện người dùng C++ có thể tùy chỉnh cho giao diện máy tính để bàn truyền thống. Cũng tốt cho nhiều giao diện người dùng nhúng tĩnh hơn cho các thiết bị/hệ điều hành hạn chế hơn. Bài viết của mình sử dụng Qt Quick vì nó đẹp và hiện đại hơn 😄, ta có thế tìm hiểu thêm tại đây. GUI Design Chúng ta có thể xây dựng ứng dụng hoàn toàn bằng C++ nhưng khi sử dụng Qt Quick cho thiết kế giao diện thì ứng dụng chạy mượt mà và đẹp hơn trên nhiều nền tảng. Qt Quick khắc phục được nhược điểm lớn của C++ đó và thêm vào đó là thời gian xây dựng giao diện nhanh hơn. Qt Quick bao gồm 2 phần là QML-ngôn ngữ cho phép xây dựng các thành phần giao diện tĩnh và Javascript-tăng tính tương tác với ứng dụng. Dưới đây là bảng so sánh QML và C++ để giải thích cho việc QML sử dụng để xây dựng giao diện thì nhiều điểm mạnh hơn C++ Signal and Slots Chúng ta có thể coi QtQuick là Frontend và C++ là backend thì cách để chúng giao tiếp với nhau là qua cơ chế Signal Slot. Cơ chế này rất quan trọng nhưng khá phức tạp nên mình sẽ dành nguyên một bài để viết về nó sau nhé. Nhưng sơ bộ cách hoạt động và sử dụng của nó sẽ như thế này: Object sẽ emit 1 signal, slot được đăng ký để nhận tín hiệu bằng lệnh QObject::connect. Khi signal được emit đi thì slot đã đăng ký sẽ nhận được sự thay đổi đó và thực hiện phản ứng lại. Meta Object System Hệ thống siêu đối tượng của Qt cung cấp signal và slot để giao tiếp giữa các đối tượng, thông tin loại thời gian chạy và hệ thống thuộc tính động. Hệ thống meta object base trên 3 điều:
Một class được gọi là meta-object sẽ trông như sau:
Ngoài ra Qt còn support nhiều moduls tiện tích khác mọi người có thể tham khảo tại đây. 2. Qt projectCác loại applications:
3. Chương trình Hello world đầu tiên với Qt Quick
Ta đi phân tích qua cây thư mục mà Qt tạo ra nhé:
Bài viết cũng khá là dài rồi nên mình sẽ kết thúc tại đây thôi. Trong bài viết tiếp theo mình sẽ giới thiệu với các bạn về QML và một số element cơ bản để xây dựng giao diện nhé. |