Hiển thị các bài đăng có nhãn Qt. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Qt. Hiển thị tất cả bài đăng

Thứ Ba, 24 tháng 4, 2012

[Qt] Giới thiệu Qt Framework

Bài viết này sẽ giới thiệu sơ qua về Qt Framework để bạn có một cái nhìn tổng quan về những gì Qt Framework có thể cung cấp cho bạn. Có lẽ thật là thiếu sót khi đến bây giờ mới giới thiệt về Qt nhưng chắc vẫn còn kịp :D

1. Qt Framework là gì?
      Qt là một Framework cho phép xây dựng các ứng dụng có giao diện chạy trên nhiều nền tảng: bao gồm  hệ điều hành Symbian, Meego, Windows, Linux, Mac.
      Qt framework bao gồm một thư viện hỗ trợ chạy đa nền, tích hợp với các công cụ phát triển và các IDE. Với Qt framework bạn có thể lập trình một ứng dụng trên Windows và biên dịch để chúng chạy trên Linux hoặc Mac mà không phải thay đổi mã nguồn của chương trình.
       Qt cũng hỗ trợ đa ngôn ngữ lập trình, ngoài phiên bản chính thức hỗ trợ cho C++, Qt còn có các phiên bản binding cho các ngôn ngữ khác như Pascal, C#, Python, Ruby ......

2. Lịch sử phát triển của Qt framework.
     Qt framework được khởi xướng bởi Haavard Nord (Trolltech's CEO) và Eirik Chambe-Eng (Trolltech's president) từ năm 1991 (ban đầu họ chỉ là những lập trình viên bình thường). Đến năm 1995 phiên bản đầu tiên của Qt được công bố ra cộng đồng, đó là phiên bản Qt 0.9.0.
     Năm 1999 Qt giành được giải thưởng Linux World cho thư viện/công cụ tốt nhất. Và cũng trong khoảng thời gian này, công ty Trolltech được thành lập.
     Năm 2008 Nokia mua lại Trolltech, từ đây Qt được sở hữu và phát triển bởi Nokia. Mã nguồn của Qt cũng được công bố cho cộng đồng mã nguồn mở.
     Hiện nay Qt có 2 phiên bản: Môt phiên bản mã nguồn mở và một phiên bản thương mại. Với phiên bản thương mại thì người lập trình không phải công bố mã nguồn với cộng đồng.

3. Các thành phần của Qt
  • QtOpenGl
  • QtSvg
  • QtWebkit
  • QtXmlPatt
  • Qt3Support
  • QtGui
  • QtNetwork
  • QtSql
  • QtXml
  • QtScript
  • Phonon
4. Các ưu điểm của Qt 
- Code 1 lần và chạy khắp mọi nơi: code trên Windows, chạy trên Linux, Mac, thiết bị di động, thiết bị nhúng...
- Các thư viện class trực quan, đơn giản và dễ sử dụng.
- Tạo ra code dễ đọc, dễ mở rộng và dễ tái sử dụng.
- Ứng dụng tạo ra có hiệu suất xử lý cao và chạy khá nhanh.
- OpenWebkit cho phép xây dựng và chạy các ứng dụng dựa trên nền web, ví dụ như game viết bằng Html5, Css, JavaScript. 

5. Kết luận
       Nếu bạn đang lựa chọn một ngôn ngữ để phát triển các ứng dụng chạy đa nền tảng, thay vì phải phải chọn một ngôn ngữ mới như Java bạn hãy chọn Qt Framework.
      Tại sao? Bởi vì với Qt bạn sẽ phát triển các ứng dụng trên ngôn ngữ C++ mà không phải học thêm ngôn ngữ mới. Hơn nữa Qt sử dụng C/C++ sẽ đem lại performance cao hơn so với Java vì nó chạy trực tiếp mà không phải dùng máy ảo.
     Hãy trải nghiệm!

Download Tài liệu học lập trình giao diện trên Qt


---wolfSpirit---

Chủ Nhật, 22 tháng 4, 2012

[Qt] Biên dịch một ứng dụng Qt đơn giản từ dòng lệnh (Command line) trong Window

Bài viết này sẽ hướng dẫn các bạn build một ứng dụng Qt đơn giản từ dòng lệnh của Window 

tham khảo thêm phần thiết lập biến môi trường bài
http://skywolfbiz.blogspot.com/2012/04/qt-cai-at-qt-sdk-va-qt-creator-tren.html


Bước 1: các bạn tạo thư mục hello và một  file hello.c với nội dung

 #include <QApplication>
 #include <QLabel>
 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     QLabel *label = new QLabel("Hello Qt!");
     label->show();
     return app.exec();
 }
Sau khi lưu file lại, các bạn mở công cụ dòng lệnh, chuyển đến thư mục hello

Bước 2: tạo file Project
gõ lệnh:
qmake -project
 file hello.pro sẽ được tạo ra.

Bước 3:  tạo file make
gõ lệnh:
qmake hello.pro

Bước 4: Biên dịch:
Nếu muốn tạo ra file debug các bạn gõ lệnh:
make 
hoặc
make -f Makefile.debug

Nếu muốn tạo ra phiên bản release thì gõ lệnh:
make -f Makefile.release

Bước 5: chạy kết quả
Các bạn vào thư mục release hoặc thư mục debug vừa mới tạo ra và chạy file hello.exe.
Kết quả như sau:

[Qt] Cài đặt Qt SDK và Qt Creator trên Windows dùng MinGW

Trong bài viết này mình sẽ hướng dẫn các bạn cài đặt Qt trên Windows.
Với các bạn không sử dụng biên dịch từ dòng lệnh thì chỉ cần xem từ bước 1 đến bước 4 và phần chú ý.


Bước 1:  Download bộ cài Qt
Các bạn vào trang chủ của Qt download Qt Library và Qt Creator phiên bản mới nhất
Hoặc phiên bản 4.8.1 theo link sau:
- Qt libraries 4.8.1 for Windows (minGW 4.4, 319 MB)
- Qt Creator 2.4.1 for Windows (53 MB)

Bước 2:  Cài đặt Mingw
Các bạn tải bộ cài đặt MinGW  theo link sau
 - http://sourceforge.net/projects/mingw/files/latest/download?source=files
 hoặc tải file zip tại đây:
- http://get.qt.nokia.com/misc/MinGW-gcc440_1.zip
Đối với file zip thì sau khi tải về các bạn chỉ cần giải nén là dùng được.

Bước 3: Cài đặt Qt Library
Các bạn cài Qt Library trước bằng cách chạy file  qt-win-opensource-4.8.1-mingw.exe
Quá trình giải nén khá tốn thời gian. Sau khi giải nén xong, các bạn nhấn next liên tiếp cho đến khi gặp màn hình chọn Mingw.
Các bạn nhấn nút browse và trỏ đến thư mục bạn cài đặt MinGW hoặc nơi bạn giải nén file zip. Và click Next đến khi hoàn thành.

Bước 4 : Cài đặt Qt Creator. Các bạn chỉ cần chạy và Click Next cho đến khi hoàn thành.

Bước 5: Thiết lập biến môi trường
Click chuột phải vào My computer chọn Properties
sau đó chọn tiếp như trong hình
Trong cửa sổ mới hiện ra chọn tab Advance --> Environment Variables...
Tiếp theo chọn dòng có tên là path và double click vào đó.

Trong ô nhập Variable value các bạn thêm đường dẫn đến thư mục bin của thư mục cài Qt Library và Mingw
Ví dụ như các bạn cài Mingw và Qt Library trong ổ C thì thêm vào ;C:\Qt\4.8.1\bin;C:\MinGW\bin
các bạn nhớ là đường dẫn tới Qt Library trước nha vì nó sẽ tiện nhiều cái, và các bạn chú ý dấu chấm phẩy ngăn cách các đường dẫn   nếu không có dấu chấm phẩy thì sẽ không chạy được.


Bước 6: Kiểm tra đã cài đặt thành công chưa.

 Các bạn mở command promt và gõ 2 lệnh
qmake -v
make -v
nếu 2 lệnh chạy không bị lỗi là cài thành công.
Kết quả của mình như sau:

C:\Users\BlueZky>qmake -v
QMake version 2.01a
Using Qt version 4.8.1 in C:/Qt/4.8.1/lib

C:\Users\BlueZky>make -v
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  

Bước 7: Tạo một ứng dụng đơn giản với Qt Creator.
Các bạn vào File--> New file or project , chọn Qt Application


Nhập tên và chọn vị trí lưu project

Chọn Version của bộ thư viện:

Click Next đến khi hoàn tất. Nhấn Ctrl + R để build và chạy


Lưu ý:
Khi tạo project bạn có thể bị lỗi không xác định SDK. Để sửa lỗi này bạn làm như sau:
Vào Tool --> Option --> Build & Run
Click Add  và trỏ đường dẫn đến file qmake.exe trong thư mục bin của bộ Qt. ví dụ như của tôi là
C:\Qt\4.8.1\bin\qmake.exe và click OK.

Bây giờ bạn có thể tạo project bình thường như trong bước 7.

Thứ Tư, 18 tháng 4, 2012

[Qt] Bắt một sự kiện giao diện bất kỳ cho một đối tượng control

Ban đầu mình cố gắng connect sự kiện của một đối tượng QLineEditBox nhưng tìm mãi không thấy.
Lên mạng tìm hiểu thì ra nó không có hỗ trợ sự kiện đó nhưng có một cách thay thế đó là viết hàm bắt tất cả sự kiện trên control đó rồi chọn ra sự kiện muốn xử lý bằng cách overide lại hàm eventFilter().

Ví dụ mình muốn bắt sự kiện focus trong QLineEditBox:
class MainWindow : public QMainWindow

 {

 public:

     MainWindow();

 protected:

    //Khai báo là sẽ override hàm eventFilter()

     bool eventFilter(QObject *obj, QEvent *ev);

 private:

     QLineEdit *textEdit;

 };

 MainWindow::MainWindow()

 {

     textEdit = new QLinEdit;

     setCentralWidget(textEdit);

   

    // Câu lệnh này cài đặt eventFilter cho đối tượng textEdit

    //và đối tượng xử lý eventFilter là đối tượng hiện tại (MainWindow)

     textEdit->installEventFilter(this);

 }

 /*

    Obj là đối tương phát sinh sự kiện

    Event là loại sự kiện

 */

 bool MainWindow::eventFilter(QObject *obj, QEvent *event)

 {

    // Nếu đối tượng là textEdit

     if (obj == textEdit) {

        // Nếu sự kiện là focus

         if (event->type() == QEvent::FocusIn) {

            // mỗi lần click vào sẽ chọn tất cả nội dung trong textEdit box.

             textEdit->selectAll();

             // Trả về true nếu sự kiện xử lý thành công

             return true;

         } else {

             return false;

         }

     } else {

         // Nếu không phải là sự kiện cần bắt, trả về cho thằng cha xử lý

         return QMainWindow::eventFilter(obj, event);

     }

 }

[Qt] Truyền giá trị cho các tham số trong câu lệnh sqlite

Một số cách để truyền giá trị cho tham số trong câu truy vấn SQLite trong QT

Gán giá trị theo tên tham số
QSqlQuery query;
query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (:id, :forename, :surname)");
query.bindValue(":id", 1001);
query.bindValue(":forename", "Bart");
query.bindValue(":surname", "Simpson");
query.exec();

Gán giá trị theo thứ tự tham số

query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (:id, :forename, :surname)");
query.bindValue(0, 1001);
query.bindValue(1, "Bart");
query.bindValue(2, "Simpson");
query.exec();

Gán giá trị cho trường hợp sử dụng truyền tham số theo thứ tự(version1)

query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (?, ?, ?)");
query.bindValue(0, 1001);
query.bindValue(1, "Bart");
query.bindValue(2, "Simpson");
query.exec();
Gán giá trị cho trường hợp sử dụng truyền tham số theo thứ tự(version 2):
Sử dụng AddBinValue(giá trị) thay vì bindValue. Nhưng lưu ý là thứ thự các câu lệnh AddBinhValue phải theo đúng thứ tự tham số muốn truyền vào

query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (?, ?, ?)");
query.addBindValue(1001);
query.addBindValue("Bart");
query.addBindValue("Simpson");
query.exec();