Chào mừng đến với phần thú vị nhất của giáo trình này !
Trong chương này, chúng ta sẽ làm quen với thư viện Qt, 1 công cụ giúp ta thao tác với giao diện đồ họa của máy tính. Các bạn sẽ tìm hiểu cách để tạo ra các chương trình cửa sổ mà các bạn vẫn sử dụng hàng ngày.
Đáng tiếc là tôi không thể giới thiệu nó với các bạn sớm hơn vì nếu thiếu đi những kiến thức cơ bản trong phần đầu giáo trình, các bạn sẽ không thể hiểu được những thứ tôi đang trình bày.
Nếu các bạn thấy vẫn chưa nắm vững khái niệm nào đó trong lập trình hướng đối tượng, đừng ngại đọc lại bài học tương ứng để củng cố thêm.
Trong bài học này, chúng ta sẽ tìm hiểu cụ thể xem Qt là gì và những công cụ mà thư viện này cung cấp cho chúng ta.
Trước hết, hãy xem làm sao để cài đặt và tùy chỉnh Qt.
Tôi dám chắc đây hẳn là câu hỏi nảy ra ngay trong đầu của nhiều bạn. Thế nhưng hãy từ từ, đừng quá vội vàng. Nếu bây giờ các bạn muốn đốt cháy giai đoạn thì sẽ rất dễ mắc lỗi trong những phần sau. Chúng ta sẽ cùng tiến từng bước một.
GUI hay « Graphical User Interface » có nghĩa là « giao diện đồ họa người dùng ». Đây là thuật ngữ chung dùng để gọi những chương trình với giao diện các cửa sổ.
Sau đây là 2 chương trình để so sánh : 1 có GUI và 1 không dùng GUI.
Tổng quan thì chúng ta có 2 lựa chọn :
Đương nhiên là lựa chọn thứ 2 thường là lựa chọn tốt hơn vì nó khá linh hoạt. Đây cũng sẽ là sự lựa chọn của chúng ta để không có bạn nào cảm thấy bị bỏ rơi lại phía sau.
Dưới đây tôi sẽ giới thiệu với các bạn các thư viện riêng của từng hệ điều hành để ít nhất các bạn có thể biết đến tên chúng. Tiếp đó chúng ta sẽ cùng điểm danh những thư viện đa nền tảng nổi bật nhất.
Mỗi nền tảng hệ điều hành (Windows, Mac OSX, Linux, …) đều cung cấp ít nhất 1 thư viện cho phép tạo nên các cửa sổ. Điểm yếu chung của những thư viện này là chương trình tạo ra trong hệ điều hành nào thì chỉ hoạt động trên hệ điều hành đó. Điều này nghĩa là nếu bạn sử dụng thư viện của Windows thì chương trình của bạn sẽ chỉ chạy trên Windows. Dưới đây là các thư viện chính hay được dùng cho mỗi hệ điều hành.
Như các bạn đã thấy, chúng ta sẽ có ít nhất 1 thư viện cơ bản cho mỗi hệ điều hành. Một vài trong số chúng, như Cocoa, thì chỉ hoạt động trên nền tảng sẵn có của nó. Vậy nên nếu các bạn muốn hướng phần mềm của mình tới mọi đối tượng người dùng, lời khuyên là nên sử dụng 1 thư viện đa nền tảng.
Các thư viện đa nền tảng có khá nhiều ưu điểm kể cả trong trường hợp các bạn muốn tạo ra các phần mềm chuyên biệt cho 1 hệ điều hành nhất định.
Tóm lại, một thư viện đa nền tảng không chỉ đảm bảo chương trình của bạn hoạt động được ở khắp mọi nơi mà còn đảm bảo nó có thể hoạt động độc lập trong 1 thời gian dài và cung cấp nhiều tiện ích cho lập trình viên.
Sau đây là giới thiệu ngắn gọn về 1 số thư viện đa nền tảng.
Để chọn giữa những thư viện này cũng khá tốn thời gian. 1 lý do nữa để Qt được chon ở đây là vì chất lượng khá tốt của tài liệu hỗ trợ cung cấp bởi thư viện này.
Đến đây thì các bạn đã biết, Qt là 1 thư viện đa nền tảng để tạo nên các giao diện đồ họa người dùng, chủ yếu với các cửa sổ.
Qt được viết bằng C++ và được thiết kế để sử dụng trong C++. Tuy nhiên, hiện nay chúng ta đã có thể dùng thư viện này với nhiều ngôn ngữ khác như Java hay Python, vv…
Trên thực tế, Qt không phải một thư viện mà là 1 tập hợp các thư viện. Chúng rất rộng và thường thì người ta sử dụng thuật ngữ framework, nghĩa là 1 khối kiến trúc tập hợp cung cấp nhiều công cụ để việc lập trình của chúng ta trở nên hữu hiệu hơn.
Không nên nhầm lẫn, Qt được thiết kế cơ bản để tạo ra các cửa số và đây mà 1 tính năng rất quan trọng của nó. Nói vậy không có nghĩa là các tính năng của nó hạn chế chỉ có vậy.
Qt được hình thành từ tập hợp các thư viện, gọi là « module ». Trong đó chúng ta có thể tìm thấy rất nhiều tính năng khác.
Nói chung thì Qt khá đồ sộ và để giải thích hết về nó thì chỉ 1 giáo trình là chắc chắn không đủ. Tôi có thể giới thiệu 1 phần cho các bạn nhưng các bạn sẽ không bao giờ biết hết tất cả. Vậy nên chúng ta sẽ tập trung chú ý lên phần liên quan đến GUI.
Cho những ai muốn tìm hiểu thêm thì đây là tài liệu chính thức của Qt. Nó được viết bằng tiếng Anh như tất cả các tài liệu lập trình khác. Hãy yên tâm, nó được cấu trúc khá tốt và hướng dẫn khá cụ thể giúp dễ dàng cho việc tìm hiểu của các bạn. Tôi chả đã nói lý do tôi chọn Qt vì đống tài liệu của nó khá là rõ ràng và hữu ích là gì.
Nếu bạn vẫn thấy khó khăn khi tiếp xúc với tài liệu kiểu này, sẽ có 1 bài hướng dẫn cách sử dụng chúng ở phần sau của giáo trình.
Xin phép cho tôi được nhắc lại thêm 1 lần nữa, Qt là framework đa nền tảng. Sơ đồ dưới đây minh họa cơ chế hoạt động của Qt.
Các bạn viết bằng Qt và Qt dịch các câu lệnh ra tùy theo hệ điều hành. Dựa trên cơ chế này, cửa sổ mà các bạn tạo ra mang hình dạng thay đổi phù hợp với từng hệ điều hành. Dưới đây là những hình ảnh minh họa điều mà tôi vừa nói. Chúng là hình ảnh của cùng 1 cửa sổ được tạo ra trong chương trình Qt nhưng mang theo hình dáng khác nhau tùy thuộc hệ điều hành cũng như phiên bản của hệ điều hành. Mỗi lần Qt đều thay đổi cửa sổ để phù hợp với hệ thống.
Tất cả những gì bạn cần làm biên dịch lại chương trình trong các hệ điều hành khác nhau. Ví dụ, các bạn đã viết 1 chương trình Windows và nó hoạt động rất tốt. Bây giờ bạn muốn nó chạy trên Linux, vậy chỉ cần biên dịch lại trong Linux và bạn đã có phiên bản Linux của ứng dụng tuyệt với mà bạn vừa viết.
? Bắt buộc phải biên dịch lại cho từng hệ điều hành à ?
Đúng vậy, việc này cho phép Qt tạo ra chương trình nhị phân thích hợp với từng hệ điều hành và tối ưu tốc độ xử lý của phần mềm mà bạn viết.
Dù sao cũng không cần biên dịch tất cả các phiên bản trong 1 lần. Ít nhất đầu tiên chúng ta chỉ biên dịch trong hệ điều hành của mình là được rồi.
! Với những ngôn ngữ khác như Java hay Python thì không cần phải biên dịch lại bới cơ chế của chúng có đôi chút khác biệt với C++. Cơ chế này khiến các chương trình chậm đi 1 chút nhưng lại khiến chúng tự động có khả năng phù hợp với bất cứ môi trường nào.
Lợi thế của C++ so với các ngôn ngữ này là tốc độ xử lý dù là ưu thế này ngày càng trở nên nhỏ trừ trong trường hợp của các trò chơi thật sự cần xử lý tốc độ cao thì chúng vẫn chủ yếu được viết bằng C++.
Biết thêm 1 chút kiến thức chung lúc nào cũng là chuyện tốt. Qt là 1 framework lúc đầu được phát triển bởi 1 công ty tên là Trolltech, về sau bị Nokia mua lại.
Qt bắt đầu vào năm 1991 và đã được sử dụng trong môi trường KDE của Linux ngay từ những ngày đầu đó.
Trong tên của Qt thì là chữ t được viết thường chứ không được viết hoa. Sự thật thì Qt sẽ được đọc là « cute », nghĩa là dễ thương vì những lập trình viên tạo ra Qt thấy rằng chữ Q trông rất dễ thương ở trong trình soạn thảo văn bản.
Qt được phát hành dưới 2 giấy phép : LGPL hoặc giấy phép sở hữu. Cái chúng ta quan tâm là giấy phép LGPL vì nó cho phép chúng ta sử dụng miễn phí Qt (và thậm chí truy cập tới mã nguồn của nó nếu chúng ta muốn !). Chúng ta có thể tạo ra các ứng dụng mở, nghĩa là các chương trình mà mã nguồn được công bố và cho phép người khác có quyền thay đổi nó, cũng như là các phần mềm bản quyền.
Thư viện Qt được rất nhiều các công ty lớn sử dụng. Các công ty này lớn đến mức chắc chắn các bạn đã nghe nói đến 1 trong số chúng : Adobe, Boeing, Google, Skype, vv…
Qt được sử dụng trong giao diện đồ họa của Photoshop Elements hay Google Earth cũng như là Skype.
Nếu các bạn đã sẵn sàng, chúng ta hãy cùng bắt đầu cài đặt Qt.
Bắt đầu bằng việc lên trang web chính thức của Qt và tải bộ cài về.
Có rất nhiều đường dẫn để tải về nhưng không sao, cứ chọn phiên bản mới nhất mà các bạn thấy ứng với hệ điều hành của bạn. Hãy chọn « Online installer », trình cài đặt trực tuyến của Qt.
Sau khi tải trình cài đặt về, hãy chạy nó. Chương trình này sẽ tự động tải những tệp cần thiết và chạy xử lý cài đặt. Các bạn sẽ cần chờ ít phút vì Qt khá là nặng.
! Nếu các bạn sử dụng Linux Debian hoặc Ubuntu thì tôi đề nghị sử dụng lệnh cài đặt từ hệ thống lưu trữ với lệnh apt-get install qtcreator
. Phiên bản có lẽ không phải bản mới nhất nhưng cũng sẽ không tụt lại quá xa. Ưu điểm là quá trình cài đặt sẽ dễ dàng quản lý hơn nhiều.
Quá trình cài đặt trong Windows có sự giúp đỡ của giao diện cài đặt khá dễ hiểu. Trong quá trình cài đặt, 1 số tệp sẽ được tải về trước khi chạy xử lý cài đặt.
Dưới đây là hình ảnh của từng bước cài đặt.
Nếu bạn chưa quen, hãy tiếp tục quá trình cài đặt sử dụng các thông tin mặc định mà hệ thống cung cấp.
Sau đó, các bạn sẽ được yêu cầu chọn những thành phần bạn muốn cài vào máy. Cứ sử dụng những lựa chọn mặc định là ổn.
Đương nhiên là các bạn cần đồng ý với điều khoản sử dụng.
Rồi máy tính sẽ hỏi nơi mà bạn muốn đặt đường dẫn rút gọn của Qt trong danh sách trong nút Start.
Sau đó thì việc tải tệp và cài đặt bắt đầu.
Dù là chúng ta hoàn toàn có thể lập trình C++ với Qt bằng IDE vốn có của chúng ta như Code::Blocks, tôi chân thành khuyên các bạn nên sử dụng IDE Qt Creator mà chúng ta vừa cài đặt. Nó được đặc biệt tối ưu hóa cho việc phát triển với Qt. Thật ra, nó là 1 chương trình tổng hợp rất nhiều tính năng.
Dưới đây là hình ảnh của IDE này.
Như các bạn đã thấy thì đây là 1 công cụ khá sáng sủa và được thiết kế cẩn thận. Trước khi có Qt Creator, người ta đã từng phải tốn công thực hiện các tùy chỉnh đôi khi khá phức tạp để có thể bien dịch các dự án sử dụng Qt.
Trong bài học sau, chúng ta sẽ học cách sử dụng Qt Creator để tạo ra ứng dụng của sổ đầu tiên của chúng ta.