Là gì

Cơ Bản Về Qt Framework Là Gì, Qt Tutorials, Cài đặt Qt

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.

qt framework là gì
qt framework là gì

Trong bài học này, hãy cùng congdonginan.com tìm hiểu cụ thể xem Qt là gì và Giới thiệu Qt, hướng dẫn download, cài đặt tích hợp với Visual Studio và trình bày demo cơ bản để sử dụng Qt, những công cụ mà thư viện này cung cấp cho chúng ta.

Đang xem: Qt framework là gì

Qt là gì?

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…

Qt là một Application Framework. Mục tiêu của các nhà phát triển nên Qt chính là tạo ra một framework có khả năng thiết kế những phần mềm có thể chạy trên nhiều nền tảng phần mềm lẫn phần cứng khác nhau mà không phải thay đổi nhiều về code.

Qt không chỉ là thứ giúp bạn viết giao diện cho phần mềm của mình, nó có đầy đủ các khía cạnh để tạo nên một phần mềm hoàn chỉnh ở nhiều góc độ, cho dù phần mềm đó có giao diện hay không.

Bạn có thể dùng Qt viết ra những phần mềm chạy bằng dòng lệnh, hoặc là các ứng dụng console chạy trên server, thậm chí là các web framework,….

Qt là gì?
Qt là gì?

Lịch sử các công ty phát triển Qt:

Trolltech (1991 – 2008)

Nokia (2008 – 2011)

Digia (2012 – 2014)

Qt Project (2011 – nay) cùng phát triển bản Qt mã nguồn mở, được Nokia thành lập, sau này nhân sự và công nghệ về mảng này đều được Digia mua lại và quản lý

Hiện tại Qt Company đã được thành lập (Digia + Qt Project) để thống nhất phát triển cho Qt.\

Làm thế nào để tạo ra các cửa sổ ?

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

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.

GUI

giao diện đồ họa người dùng

Các cách khác nhau để tạo ra các chương trình GUI

Tổng quan thì chúng ta có 2 lựa chọn :

  • Viết 1 chương trình chuyên biệt cho 1 hệ điều hành và không thể sử dụng nó trên hệ điều hành khác.
  • Sử dụng 1 thư viện (library) hòa hợp với mọi hệ điều hành, nghĩa là 1 thư viện đa nền tảng.

Đươ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.

Thư viện riêng của các hệ điều hành

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.

  • Windows : Trong Windows, chúng ta có thư viện, hay nói chính xác hơn là framework (1 kiểu kiến trúc bộ khung) .NET. Đây là một nhóm thư viện hoàn chỉnh, dùng được cho C++, C#, Visual Basic, vv… Ngôn ngữ chính dành cho .NET là C#. Chú ý là .NET cũng có thể được sử dụng trên Linux với ít nhiều hạn chế nhờ vào dự án Mono. Nói chung, đây là 1 con dao Thụy Sỹ nếu các bạn muốn lập trình trên Windows. Ngoài ra nếu muốn thì nó cũng có thể tạo ra 1 vài chương trình chạy được trên Linux.
  • Mac OSX : Thư viện chính tên là Cocoa. Ngôn ngữ sử dụng chính của thư viện này là Objective C. Đây là 1 thư viện hướng đối tượng.
  • Linux : Các trình quản lý cửa sổ đều dựa trên X, nên tảng của giao diện đồ họa Linux. X cũng cung cấp 1 thư viện tên là Xlib nhưng người ta hiếm khi phát triển dùng Xlib. Các thư viện khác được ưa chuộng hơn nhờ dễ sử dụng và tính đa nền tảng của chúng như GTK+ (cho Gnome) hay Qt (cho KDE).

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á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.

  • Chúng đơn giản hóa rất nhiều việc tạo ra các cửa sổ. Các bạn cần viết it mã hơn mỗi khi muốn tạo ra 1 cửa sổ “đơn giản”.
  • Đồng bộ và sắp xếp tất cả mọi thứ để giúp việc quản lý mã trở nên dễ dàng hơn. Tên của các hàm và các lớp cũng được lựa chọn cẩn thận để giúp ích tối đa cho người sử dụng.
  • Chúng không chỉ trừu tượng hóa các hệ điều hành khác nhau mà còn trừu tượng hóa cả các phiên bản của cùng hệ điều hành. Vậy nên nếu ngày mai mà hệ điều hành của chương trình các bạn viết có nâng cấp thì chương trình của các bạn vẫn có thể hoạt động do thư viện sẽ biến đổi phù hợp với hệ điều hà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.

  • .NET : được phát triển bởi Microsoft để kế thừa API Win32. Người ta thường dùng nó với C# nhưng cũng có thể lập trình dùng nhiều ngôn ngữ khác, trong đó có C++. .NET về lý thuyết có thể chạy trên nhiều nền tảng do Microsoft đã giải thích cơ chế hoạt động của nó. Ít nhất, trên Linux, các bạn có thể sử dụng .NET nhờ Mono. Thế nhưng hiện nay .NET vẫn chỉ được dùng chủ yếu trên Windows.
  • GTK+ : 1 trong những thư viện quan trọng được sử dụng trên Linux. Nó có thể hoạt động được trên cả Linux, Mac OSX và Windows. GTK+ dùng ngôn ngữ C, tuy nhiên cũng có 1 phiên bản dành cho C++ tên là GTKmmGTK+ được ưu tiên sử dụng bởi những người viết ứng dụng cho môi trường Gnome của Linux nhưng nó cũng hoạt động khá tốt với KDE. Firefox dường như cũng có sử dụng thư viện này.
  • Qt : nhân vật chính của bài học nên chúng ta sẽ không nói nhiều ở đây. Biết rằng Qt cũng rất hay được sử dụng trên Linux, đặc biệt cho môi trường KDE.
  • wxWidgets : 1 thư viện đối tượng khá hoàn chỉnh. Tương quan so với Qt thì cũng mạnh mẽ và thông dụng như nhau. Tuy nhiên, trong giáo trình này, chúng ta sẽ tìm hiểu Qt vì nó thích hợp hơn với những người mới học. Đừng lo, khi chúng ta đã quen được với Qt thì wxWidgets cũng không có nhiều khác biệt. Thư viện này được sử dụng để viết nên giao diện của Code::Blocks.
  • FLTK : khác với những thư viện trên được cho là khá đồ sộ và tương đối nặng, FLTK là 1 thư viện nhỏ, nhẹ và chuyên được dành để tạo giao diện đồ họa đ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.

Các ứng dụng xây dựng bằng Qt[sửa | sửa mã nguồn]

Hiện nay có nhiều phần mềm tự do được phát triển dựa trên Qt, chẳng hạn như:

  • LyX: phần mềm soạn thảo văn bản LaTeX
  • Quantum GIS: phần mềm hệ thống thông tin địa lý
  • QCad: phần mềm vẽ kĩ thuật
  • Scribus: phần mềm xuất bản điện tử
  • Skype: phần mềm giao tiếp qua mạng internet.

Một thống kê đầy đủ [17] cho thấy Qt không chỉ xuất hiện trong máy tính mà còn trong các thiết bị nhúng và đồ điện gia dụng

Một số nền tảng mà Qt hỗ trợ

  • Windows
  • Linux
  • OS X
  • Android
  • iOS
  • WinRT (Windows 8/8.1 và Windows Phone 8/8.1)
  • Blackberry 10
  • Sắp tới sẽ hỗ trợ thêm Tizen, hệ điều hành dựa trên Linux cho nhiều loại thiết bị, OS phát triển bởi Linux Foundation, Samsung, Intel, LG, Vondafone,… (các thành viên của Tizen Association)
  • Các hệ điều hành nhúng như: Android/Linux/Windows Embedded

Các thành phần của Qt

Module Description
Qt Core Chứa các thành phần cơ sở, bao gồm các containers (tương tự thư viện chuẩn của các ngôn ngữ lập trình: QVector, QList, QMap,…), các thư viện nhập xuất đa nền tảng, lập trình đa luồng (threading) và xử lý song song (concurrency),….
Qt GUI Thành phần chính để lập trình giao diện.
Qt Widgets Các widget. Button, hộp thoại và những thứ tương tự trong giao diện đều gọi là các widget.
Qt QML Hỗ trợ cho QML và Javascript. QML (dựa trên Javascript) là một ngôn ngữ để viết giao diện cho ứng dụng Qt, bên cạnh ngôn ngữ lập trình chính C++.
Qt Quick QML là một phần của Qt Quick.
Qt Quick Controls Các widget điều khiển dành cho Qt Quick (chủ yếu dành cho desktop).
Qt Quick Layouts Bố trí các widget trong Qt Quick.
Qt Network Network abstraction layer (NAL – lớp trừu tượng cho network). Đầy đủ các giao thức TCP, UDP, HTTP và SSL.
Qt Multimedia Thư viện về âm thanh, hình ảnh, camera,….
Qt Multimedia Widgets Các widget dành cho Qt Multimedia.
Qt SQL Module làm việc với cơ sở dữ liệu (ngôn ngữ SQL).
Qt WebKit WebKit (phát triển bởi Apple, Adobe và một số công ty khác) là một module cho các web browser (Safari và Google Chrome,…) dùng để hiển thị các trang web. Qt WebKit là một thư viện giúp bạn làm việc với WebKit.
Qt WebKit Widgets Các widget cho Qt WebKit.
Qt Test Hỗ trợ Unit Test cho các ứng dụng Qt.

Các phần mềm mình viết bằng Qt

CHTDocTOOLkit 2014: phần mềm này dành cho những hosting muốn public các tài liệu dạng PDF để client có thể dễ dàng đọc được từ máy tính hoặc thiết bị android, ưu điểm của nó là load tài liệu nhanh và tiết kiệm dữ liệu truyền tải cho host.

MbatchSplit: ứng dụng cắt video hàng loạt, nó có thể cắt các video với tốc độ rất cao. Ứng dụng này do một cá nhân đặt hàng mình làm nên mình chưa thể share code được.

Qt được dùng bởi ai?

Theo mình được biết thì Skype được lập trình bằng Qt, ngoài ra bạn có thể vào folder của các game EA (battlefield,…) thì sẽ thấy một phần mềm support đi kèm được viết bằng Qt4. Ở Việt Nam thì Qt cũng được Soha dùng để tạo ra phần mềm xem phim online của họ (hiện tại thì Soha Phim đã dừng hoạt động), ngoài ra VirtualBox, FShare Tool và VLC cũng là các phần mềm được sử dụng Qt.

Học lập trình Qt

Học lập trình Qt không hề khó, bởi những kiến thức cần chỉ là lập trình C++ và lập trình hướng đối tượng là đã có thể bắt đầu,  về các thư viện và cú pháp của Qt thì đã có sẵn tài liệu và dễ dàng tra cứu, các tutorials dưới đây chỉ mang ý nghĩa dẫn nhập để người học tìm đúng con đường rèn luyện kỹ năng lập trình C++ OOP và lập trình giao diện. Tùy từng yêu cầu dự án khác nhau mà có thể dùng Qt hoặc các framework tương tự, nhưng kỹ năng làm việc vẫn luôn là giống nhau. Mong rằng người học sẽ tìm thấy những gì mình cần trong những tutorials này.

Cài đặt Qt

Nếu các bạn đã sẵn sàng, chúng ta hãy cùng bắt đầu cài đặt Qt.

Tải 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.

Tải Qt
Tải 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.

Cài đặt trong Windows

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.

Cài đặt trong Windows
Cài đặt trong Windows

Cài đặt trong Windows

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.

Cài đặt trong Windows

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.

Cài đặt trong Windows

Đương nhiên là các bạn cần đồng ý với điều khoản sử dụng.

Cài đặt trong Windows

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.

Cài đặt trong Windows

Cài đặt trong Windows

Sau đó thì việc tải tệp và cài đặt bắt đầu.

Qt Creator

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.

  • IDE để phát triển ứng dụng bằng C++, được tối ưu hóa để biên dịch các dự án dùng Qt.
  • Trình thiết kế cửa sổ cho phép chúng ta dễ dàng vẽ nội dung của giao diện mà chúng ta muốn.
  • Tài liệu hướng dẫn của Qt.

Dưới đây là hình ảnh của IDE này.

Qt Creator
Qt Creator

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.

Tạo project Demo

Vào menu Start, tìm đến “Edit Eviroment variables for your account”: thêm đường dẫn đến thư mục bin của Qt vào variables PATH. Nếu chưa có variables PATH, có thể New để thêm.

*

Khởi động Visual Studio, trên thanh công cụ xuất hiện thêm tab mới QT5, vào QT5 → Qt Options → chọn Add Qt version.

*

Tạo project Demo

File → New → Project. Tạo Qt Application project. Như hình dưới.

*

Sau khi tạo project. Build chương trình để tự động tạo các file mặc định. Quan tâm tới 1 số file như sau:

*

congdonginan.com_demo_qt.ui: hỗ trợ thiết kế giao diện trực quan.

Xem thêm: Công Ty Quảng Cáo Google Uy Tín Tại Hà Nội 2021, Top 10 Công Ty Quảng Cáo Google Uy Tín Tại Hcm

*

ui_congdonginan.com_demo_qt.h: quản lý các đối tượng trên UI (tạo, thiết lập thuộc tính, tạo kết nối sự kiện giữa các QObject).class congdonginan.com_DEMO_QT (congdonginan.com_demo_qt.cpp, congdonginan.com_demo_qt.h): cho phép tạo ra các function signals và slots để quản lý sự kiện xảy ra đối với các QObject.

Signals & Slots

*

Signals: hình dung nó như là các hàm kiểm tra sự kiện (click button, changeValue của comboBox, changeText của textBox, …), Qt đã hỗ trợ sẵn 1 vài hàm kiểm tra sự kiện, tuy nhiên, cũng có thể tự định nghĩa tuỳ vào yêu cầu của project.Slots: các hàm để xử lý sự kiện tương ứng với sự kiện được kích hoạt.

Chỉ có các lớp là lớp con kế thừa từ QObject mới có thể chứa Signals và Slots, đồng thời, các lớp này phải chứa từ khoá Q_OBJECT nằm ở đầu của khai báo lớp.

Xem thêm: Trống Máy In,Nạp Mực In Thay Trống Máy In Ricoh 4054, Khi Nào Thì Cần Thay Trống Máy Photocopy

Để liên kết các Signals và Slots với nhau, cần phải thiết lập kết nối giữa các đối tượng thông qua function QObject::connect().

Tóm tắt bài học :
  • Có 2 loại chương trình : loại chạy trong giao diện console và loại sử dụng giao diện đồ họa người dùng (GUI) với các cửa sổ như chúng ta thường thấy.
  • Tạo ra 1 chương trình có GUI thì phức tạp hơn so với 1 chương trình console.
  • Để tạo ra các chương trình có GUI, chúng ta sử dụng 1 thư viện đặc biệt tên là Qt.
  • Qt thực ra không chỉ là 1 thư viện. Nó là 1 framework hoàn chỉnh chứa nhiều module cung cấp các tính năng khác nhau. Chúng ta sẽ tập trung vào module GUI của nó.
  • Qt là đa nền tảng nên chúng ta có thể sử dụng nó trong Windows, Linux cũng như là Mac OSX.

 

Xem thêm bài viết thuộc chuyên mục: Là gì

Trả lời

Back to top button