Bài giảng Lập trình nhúng ARM-Linux - Chương 6: Lập trình nền tảng QT

pdf 27 trang phuongnguyen 3440
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình nhúng ARM-Linux - Chương 6: Lập trình nền tảng QT", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_nhung_arm_linux_chuong_6_lap_trinh_nen_t.pdf

Nội dung text: Bài giảng Lập trình nhúng ARM-Linux - Chương 6: Lập trình nền tảng QT

  1. Bài số 6 Lập trình nền tảng QT Lập trình nhúng ARM-Linux 162
  2. Mục tiêu bài học số 6 . Sau khi kết thúc b{i học n{y, sinh viên có thể • Nắm được c|c vấn đề cơ bản, đặc trưng của nền tảng Qt • C{i đặt Qt Creator (Qt SDK) trên m|y ph|t triển (Ubuntu) • L{m quen với lập trình ứng dụng giao diện đồ họa sử dụng nền tảng Qt • C{i đặt Qt Everywhere để ph|t triển ứng dụng cho nền tảng Arm Embedded Linux Lập trình nhúng ARM-Linux 163
  3. Nội dung bài học 6.1. Giới thiệu QT 6.2. C{i đặt môi trường ph|t triển Qt 6.3. L{m quen với lập trình QT 6.4. C{i đặt Qt Everywhere (Qt Embedded) Lập trình nhúng ARM-Linux 164
  4. 6.1. Giới thiệu Qt . Qt Development Frameworks được s|ng lập năm 1994 bởi TrollTech . 2008: TrollTech s|p nhập v{o Nokia . Qt l{ một Framework ph|t triển ứng dụng đa nền tảng (desktop, mobile, embedded). . Hỗ trợ c|c nền tảng: Windows, Linux, Embedded Linux, Win CE, Symbian, Maemo Lập trình nhúng ARM-Linux 165
  5. Giới thiệu QT . Qt cho phép viết ứng dụng một lần v{ biên dịch chéo trên nhiều nền tảng hệ điều h{nh khác nhau mà không phải viết lại m~. Tuy nhiên, m~ nguồn cần được biên dịch trên nền tảng m{ muốn ứng dụng được thực thi. . Lập trình Qt theo chuẩn C++. Lập trình nhúng ARM-Linux 166
  6. Giới thiệu QT . Qt Framework bao gồm: • a cross-platform class library (Thư viện c|c lớp hướng đối tượng) • integrated development tools (C|c công cụ ph|t triển tích hợp) • a cross-platform IDE. (Môi trường ph|t triển ứng dụng) . Tham khảo: qt.nokia.com; qtcentre.org Lập trình nhúng ARM-Linux 167
  7. QT được sử dụng rộng rãi Lập trình nhúng ARM-Linux 168
  8. Kiến trúc Qt Lập trình nhúng ARM-Linux 169
  9. 6.2. Cài đặt Qt SDK . C{i đặt Qt SDK trên m|y ph|t triển (Linux, Windows, MacOS) . File c{i đặt qt-sdk-linux-x86-opensource-2010.05.1.bin ( . Thực thi file c{i đặt: $ ./qt-sdk-linux-x86-opensource-2010.05.1.bin . Đợi qu| trình c{i đặt diễn ra th{nh công, mặc định thư mục c{i đặt chứa tại $HOME/qtsdk-2010.01/qt/bin Lập trình nhúng ARM-Linux 170
  10. Cài đặt Qt SDK . Sau khi c{i đặt xong Qt SDK, công cụ Qt Creator cho phép ph|t triển ứng dụng với lựa chọn mặc định biên dịch trên m|y tính Linux. Để biên dịch chéo ứng dụng thực thi trên KIT FriendlyArm (Embedded Linux) cần c{i đặt Qt Everywhere Lập trình nhúng ARM-Linux 171
  11. 6.3. Làm quen với lập trình QT . Sử dụng môi trường ph|t triển Qt Creator (IDE) . Chương trình HelloQt . Cơ chế Signals/Slot . Quản lý layout Lập trình nhúng ARM-Linux 172
  12. Môi trường phát triển Qt Creator IDE Lập trình nhúng ARM-Linux 173
  13. Các thành phần Qt Creator Lập trình nhúng ARM-Linux 174
  14. Các điều khiển (widgets) cơ bản . QLabel . QPushButton . QLineEdit . QTextEdit . QSpinBox . QComboBox . Qslider . V.v Lập trình nhúng ARM-Linux 175
  15. Chương trình HelloQt . Tạo project HelloQt . Trong file main.c bổ sung đoạn m~: . Biên dịch, chạy chương trình: #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello Qt!"); label->show(); return app.exec(); } Lập trình nhúng ARM-Linux 176
  16. Chương trình HelloQt . Giải thích ? . Sửa đoạn m~ với HTML style #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); //QLabel *label = new QLabel("Hello Qt!"); QLabel *label = new QLabel(" Hello " " Qt! "); label->show(); return app.exec(); } Lập trình nhúng ARM-Linux 177
  17. Cơ chế signals - slot . Cơ chế event – handler . Xử lý c|c sự kiện (sự kiện tương t|c người dùng, sự kiện của hệ thống) . Cho phép tạo c|c kết nối (connections) giữa sự kiện (signals) với h{m xử lý (slot) . Có 2 c|ch tạo: • Tạo tự động (wizard) • Tạo bằng tay (manual, hand-code) Lập trình nhúng ARM-Linux 178
  18. Minh họa cơ chế signals/slot . Tạo bằng code (dùng phương thức Qobject::connect) Lập trình nhúng ARM-Linux 179
  19. Minh họa cơ chế Signals/Slot . Tạo bằng code connect(sender, SIGNAL(signal), receiver, SLOT(slot)); . Trong đó: sender, receiver l{ con trỏ Qobjects, signal v{ slot l{ c|c tên h{m không có tham số. • Các macro SIGNAL() và SLOT() biến đổi tham số thành string. VD: đồng bộ giữa 2 điều khiển slider v{ spinBox Lập trình nhúng ARM-Linux 180
  20. Minh họa cơ chế Signals/Slot . Tạo tự động (wizard): chuột phải v{o đối tượng muốn xử lý sự kiện, chọn Go to slot, tìm slot l{ h{m xử lý sự kiện tương ứng muốn dùng. . Ví dụ xử lý sự kiện nút bấm (QPushButton) Lập trình nhúng ARM-Linux 181
  21. Quản lý layout trong ứng dụng Qt . Kỹ thuật lay out: Cho phép sắp xếp c|c điều khiển (widgets) trên một form. Kích thước v{ vị trí sẽ thay đổi linh hoạt khi form thay đổi kích thước. . Có c|c kiểu lay out: • Horizontal lay out • Vertical lay out • Grid lay out • Form lay out Lập trình nhúng ARM-Linux 182
  22. Chương trình TextFinder . X}y dựng ứng dụng TextFinder Lập trình nhúng ARM-Linux 183
  23. Qt Documentations . Documentation in Qt Assistant (or QtCreator) . Qt’s examples . Qt developer network: • . Qt Center Forum: • Lập trình nhúng ARM-Linux 184
  24. 6.4. Cài đặt Qt Everywhere . Bước 1: Cài đặt QT Embedded (QT Everywhere) (Xem hướng dẫn chi tiết kèm theo) . Bước 2: Copy các file thư viện cần thiết xuống KIT • 3 thư viện quan trọng (VD: copy xuống thư mục /opt/qte/lib) libQtCore.so.4 libQtGui.so.4 libQtNetwork.so.4 • Copy các fonts vào thư mục /opt/qte/lib/fonts . Bước 3: Chỉnh file cấu hình /etc/init.d/rcS, tắt Qtopia để tránh tranh chấp Lập trình nhúng ARM-Linux 185
  25. Cấu hình trình dịch Qmake cho Kit . Bước 4: Tạo cấu hình biên dịch cho Mini2440, trỏ tới Qmake đ~ biên dịch được ở trên Lập trình nhúng ARM-Linux 186
  26. Cấu hình trình dịch Qmake cho Kit . Bước 5: Dịch chương trình QT cho KIT • Chọn đúng bộ biên dịch Qmake cho QT Embedded Lập trình nhúng ARM-Linux 187
  27. Thảo luận Lập trình nhúng ARM-Linux 188