STDIO
Tìm kiếm gần đây
    Mục lục
    Thảo luận
    0
    Liên kết
    QR Code

    Tạo GUI trong C++ Sử Dụng Qt

    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.

    Kim Uyên

    12/05/2016
    22/09/2020
    4 phút đọc
    Tạo GUI trong C++ Sử Dụng Qt

    Qt là gì?

    Qt là 1 ứng dụng đa nền tảng (phát triển ứng dụng trên các platform khác nhau: Windows, Linux/X11, iOS, Android, ...), 1 framework UI (cho phép tạo ứng dụng với giao diện đồ hoạ). Ứng dụng tạo ra bởi Qt có thể chạy trên desktop, mobile hay trên các hệ thống nhúng.

    Hiện nay, Qt được xây dựng có cả bản thương mại và open source. Qt cho phép tạo giao diện 1 cách đơn giản là kéo thả.

    Qt cho phép hiện thực hàm tạo và xử lý sự kiện bằng C++, và xây dựng nhiều class để hỗ trợ cho việc phát triển ứng dụng với giao diện đồ hoạ.

    Với bản release mới nhất của Qt, có thể add-in vào Visual Studio.

    Download và cài đặt

    Download

    Qt

    Qt có các phiên bản tương thích với các hệ điều hành khác nhau:

    Hoặc truy cập địa chỉ https://www.qt.io/download-qt-installer, trang web sẽ tự động lựa chọn phiên bản thích hợp cho hệ điều hành máy của bạn.

    Visual Studio Add-in for Qt

    Truy cập địa chỉ https://download.qt.io/official_releases/vsaddin/ để tải về phiên bản Visual Studio Add-in for Qt mới nhất.

    Visual Studio Add-in phiên bản 2.5.2

    Cài đặt

    Thực hiện cài đặt 2 file trên sau khi download.

    Đối với Qt, cài đặt tại thư mục: C:\Qt

    Đối với Qt Add-in, cài đặt tại thư mục: C:\Program Files (x86)\Digia

    Thiết lập môi trường

    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.

    ss_1

    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.

    ss_2

    Tạo project Demo

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

    ss_3

    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:

    ss_4
    • stdio_demo_qt.ui: hỗ trợ thiết kế giao diện trực quan.
    ss_5
    • ui_stdio_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 STDIO_DEMO_QT (stdio_demo_qt.cpp, stdio_demo_qt.h): cho phép tạo ra các function signalsslots để quản lý sự kiện xảy ra đối với các QObject.

    Signals & Slots

    ss_6
    • 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.

    Để liên kết các SignalsSlots 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().

    Khai báo, định nghĩa các hàm signals và Slots:

    /*
    * @File: stdio_demo_qt.h
    */
    // Trong phần khai báo của subClasses QObject 
    signals:
    // function for check event
    // example: void clickPushButton();
    // Tuy nhiên, trong project này sử dụng function click() mặc định của Qt.
    public slots:
    	void showMessage()
    	{
    		QMessageBox::StandardButton reply;
    		reply = QMessageBox::question(this, "Exit", "Are you sure you want to quit?", QMessageBox::Yes | QMessageBox::No);
    
    		if (reply == QMessageBox::Yes)
    			QApplication::quit();
    	}

    Thực hiện kết nối:

    /*
    * @File: stdio_demo_qt.cpp
    */ 
    // Được gọi trong hàm khởi tạo của STDIO_DEMO_QTClass
    // connect Button with MainWindow 
    QObject::connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(showMessage()));

    Chạy ứng dụng không cài đặt Qt

    Để thực thi chương trình trên 1 máy tính không cài đặt Qt, thư mục chứa file thực thi phải đi kèm với các file .dll (chứa trong C:\Qt\Qt5.5.0\5.5\msvc2013\bin) và folder platform (chứa trong C:\Qt\Qt5.5.0\5.5\msvc2013\plugins) của Qt. Xem hình dưới.

    ss_7

    Kết quả chạy chương trình:

    ss_8

    Download demo tại đây: STDIO_DEMO_QT

    Modern C++

    Modern C++

    STDIO Training - Đào Tạo Lập Trình C++.

    Đề xuất

    Sử Dụng Mảng Trong C++

    Sử Dụng Mảng Trong C++

    Tìm hiểu những kiến thức cơ bản về mảng dữ liệu và cách sử dụng mảng ...

    Modern C++C++98

    29/07/2015

    Interface Trong C#

    Interface Trong C#

    Giới thiệu về interface trong C#, ý nghĩa sử dụng, tính ứng dụng và cách ...

    Huỳnh Minh Tân

    03/10/2017

    Khám phá thêm

    Tư Duy Tối Ưu Hóa Trong Lập Trình Games - Phần 1: Codes Trong C/C++

    Tư Duy Tối Ưu Hóa Trong Lập Trình Games - Phần 1: Codes Trong C/C++

    Bài viết hướng tối ưu hóa trong lập trình với C++, tối ưu hóa lập trình ...

    Lập Trình GameKiến Thức Nâng Cao

    18/09/2014

    Các Phương Thức Khởi Tạo Đối Tượng trong C++

    Các Phương Thức Khởi Tạo Đối Tượng trong C++

    Giới thiệu và hướng dẫn sử dụng 3 phương pháp khởi tạo đối tượng với ...

    Modern C++C++0x

    15/09/2014

    Thao Tác với XML Sử Dụng TinyXML trong C++

    Thao Tác với XML Sử Dụng TinyXML trong C++

    Hướng dẫn thao tác với XML sử dụng TinyXML trong C++.

    Modern C++Win32 API

    21/10/2015

    9 Tính Năng Quan Trọng Trong C++11

    9 Tính Năng Quan Trọng Trong C++11

    C++11 là một phiên bản cải tiến và nâng cấp từ C++98 (hay các bạn vẫn ...

    Modern C++C++0x

    13/08/2015

    Xử Lý Sự Kiện Trong SDL

    Xử Lý Sự Kiện Trong SDL

    Xử lý sự kiện trong game vô cùng quan trọng, đòi hỏi chúng ta phải thao ...

    Lập Trình GameKiến Thức Nâng Cao

    13/10/2015

    Hướng Dẫn Sử Dụng RapidJSON để Xử Lý JSON trong C++

    Hướng Dẫn Sử Dụng RapidJSON để Xử Lý JSON trong C++

    Khái niệm về định dạng JSON và cách sử dụng RapidJSON để thao tác với ...

    Trần Thị Thu Hiền

    21/12/2014

    Làm Việc với Máy In trong C#

    Làm Việc với Máy In trong C#

    Hướng dẫn cơ bản sử dụng C# ra lệnh in thông qua Driver của máy in.

    C# for AutomationIn Ấn

    06/07/2020

    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020