QT4- Lập Trình Nhúng Trên Ubuntu - Dien Tu Viet Nam
Có thể bạn quan tâm
- Đăng ký hoặc đăng nhập
- Logging in... Ghi Nhớ? Ðăng Nhập Forgot password or user name? hoặc Đăng ký
- Log in with Facebook
- Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
- Bài viết
- Hoạt động gần đây
- Tìm kiếm
- Trang of 2
- Lọc
- Giờ All Time hôm nay Last Week Last Month
- Show All Discussions only Photos only Videos only Links only Polls only Events only
-
tuylipden Thành viên mới
- Tham gia: Sep 2011
- Bài viết: 13
- Share
-
Tweet
QT4- Lập trình nhúng trên Ubuntu
19-09-2011, 05:05 Đã lâu rồi không thấy anh em trên diễn đàn nhắc đến QT nữa nhỉ ? Hiện tại mình đang làm một đề tài liên qua đến truyền video thời gian thực trên máy tính nhúng sử dụng mạng addhoc và lập trình trên QT4. Mình có rất nhiều điều muốn hỏi và mong được sự góp ý của anh em. Đồng thời qua đây cũng mong muốn QT ngày càng phát triển bởi quả thực nó là một Platform rất hay. Các công cụ có thể sánh ngang với visual. Trước hết mình xin bắt đầu vào phần cài đặt và sử dụng nhé sơ qua nhé Để cài đặt QT4 trên ubuntu (10.10) bạn có 2 cách : -Thứ nhất cài đặt trong Applications>Ubuntu Software Center .Bạn gõ Qt vào phần Search và cài đặt các phần Qt4 Designer, Qt4 Assistant, Qt4 Linguist, Qt4 Settings và cuối cùng là IDE riêng của QT QT Creator -Thứ hai bạn có thể vào trang chủ của QT và down bộ cài đầy đủ ( gói SDK ) : Download Qt, the cross-platform application framework — Qt - A cross-platform application and UI framework Sau khi bạn down gói SDK ( có đuôi là .run ) thì tiến hành cài đặt ,bạn chuyển gói này vào home, mở Terminal và gõ : chmod u+x Qt_SDK_Lin32_offline_v1_1_3_en.run gõ tiếp ./Qt_SDK_Lin32_offline_v1_1_3_en.run Theo mình nên cài theo cách thứ nhất. Bởi bản ubuntu 10.10 trở đi đã hỗ trợ đầy đủ cho Qt. Còn nếu bạn dùng phiên bản thấp hơn 10.10 thì nên cài theo cách thứ 2. Tiếp theo mình xin làm một ví dụ nho nhỏ với Qt. Load ảnh từ máy tính và hiển thị Bước 1: Tạo project của Qt. Bạn vào Applications >Programing >QT Creator .Giao diện của Qt Creator hiện lên như sau
Bạn chọn Create Project Tiếp theo bạn chọn loại project, ở đây mình sử dụng là Qt C++ Project> Qt Gui Application. Cuối cùng mình ấn choose và cửa sổ đặt tên project hiện ra
Sau khi đặt tên bạn chọn Next thì Qt sẽ yêu cầu bạn đặt tên cho class khởi đầu của chương trình ( Đây chỉ là một thủ tục, bạn có thể đặt tên rồi khi viết chương trình không sử dụng class này cũng chẳng sao ).
Trong vd này mình đặt tên Class là ShowImage.Chọn Base class là QWidget (lớp giao diện).Cuối cùng ấn Finish để bắt đầu lập trình. Mình sẽ nói qua về các thành phần của một lớp trong QT Một lớp trong Qt sẽ bao gốm 3 thành phần là : Header file ( đuôi .h ), thành phần này có chức năng chứa các hàm, các biến toàn cục, con trỏ, hoặc cấp phát bộ nhớ cần khai báo để sử dụng trong class. Thành phần thứ hai là Source file ( đuôi .cpp ), thành phần này chứa các định nghĩa hàm, chức năng các hàm trong class. Đây là thành phần quan trọng nhất trong Qt. Thành phần thứ 3 là Form file ( đuôi .ui ). Tùy từng class và cách chọn của người sử dụng mà thành phần này có trong chương trình. Thành phần này giúp người sử dụng tạo giao diện dễ dàng hơn thông qua kéo thả đồng thời tương tác với các thành phần của giao diện ( button, label .... ) khá dễ dàng. Nếu không sử dụng thành phần này bạn cũng hoàn toàn có thể code giao diện trong file.cpp. Tất nhiên không thể thuận tiện và dễ quản lí như Form. Bước 2 :Sau khi tạo project thì chúng ta bắt đầu lập trình thôi Trước tiên mình vào form. Trong cột Project bạn click vào showimage.ui Trong form này mình kéo thả tạo ra 2 cái label với tên là lbl_Hello ( Cái này dùng để hiện thị chữ "Hello" ) và lbl_Image ( Cái này là để show ảnh ).
Sau khi tạo xong mình quay về showimage, viết chữ "Hello" bằng cách sử dụng hàm setText() ui->lbl_hello->setText("Hello"); Để hiện thị ảnh thì trước tiên bạn cần phải tạo một biết kiểu QImage ( Đây là một kiểu biến của Qt để xử lí ảnh) và load ảnh từ ổ cứng lên Qimage image("qt4.png"); Chú ý bạn phải để ảnh trong thư mục build project nhé. Ở đây của mình là thư mục Home/test-build-desktop
Tiếp theo để hiện thị hình ảnh thì ta cần chuyển QImage sang lớp QPixmap sau đó hiển thị các Pixmap trên label (lbl_Image) QImage img("qt4.png"); QPixmap pixmap ; pixmap=pixmap.fromImage(img); ui->lbl_Image->setPixmap(pixmap); Đến đây bạn có thể xem kết quả của mình rồi
Last edited by tuylipden; 19-09-2011, 21:57. Tags: qt4 -
quangtn82 Thành viên tích cực
- Tham gia: Nov 2009
- Bài viết: 259
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
tuylipden Thành viên mới
- Tham gia: Sep 2011
- Bài viết: 13
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
quangtn82 Thành viên tích cực
- Tham gia: Nov 2009
- Bài viết: 259
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
fly_1304 Thành viên tích cực
- Tham gia: Sep 2009
- Bài viết: 284
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
quangtn82 Thành viên tích cực
- Tham gia: Nov 2009
- Bài viết: 259
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
tuylipden Thành viên mới
- Tham gia: Sep 2011
- Bài viết: 13
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
quangtn82 Thành viên tích cực
- Tham gia: Nov 2009
- Bài viết: 259
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
tuylipden Thành viên mới
- Tham gia: Sep 2011
- Bài viết: 13
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
tuylipden Thành viên mới
- Tham gia: Sep 2011
- Bài viết: 13
- Share
-
Tweet
. Nhưng thiệt là hình ảnh lấy về được là kiểu IplImage. Kiểu ảnh này là dạng ảnh của opencv và tất nhiên là Qt nó bó tay luôn. Nên mình phải dùng một hàm để chuyển sang kiểu QImage của QT. Khi thực hiện bước này xong thì bài toán đã trở về ví dụ 1 rồi Bước 1 : Cài đặt opencv và tích hợp vào Qt Bạn nào sử dụng ubuntu thì đơn giản rùi. Các bạn vào System >Administration > Synaptic Package Manager. Trong ô search gõ opencv. Bỏ 2 cái đầu và cái cuối còn đâu bạn chọn hết rồi ấn Apply để cài đặt
Tiếp theo là add các thư viện của opencv vào Qt. Khi tạo Project của Qt có xuất hiện một file .pro, file này sẽ quyết dịnh việc sử dụng module nào, thư viện nào cho Qt. Để add opencv vào project của Qt bạn thêm các lệnh sau vào file .pro LIBS += -L/usr/local/include/opencv -lcv LIBS += -L/usr/local/include/opencv -lhighgui Bước 2 : Capture hình ảnh kiểu IplImage Mình sẽ tạo 1 class mới để capture hình ảnh. Trong project các bạn click chuột phải vào phần tên project, của mình ở đây vẫn là test. Sau đó bạn chọn Add new.... Bạn chọn C++ Class và ấn Choose.... Bạn đặt tên cho class. Ở đây mình đặt tên là "Camera" và chọn Base class là QWidget. Chọn Finish để kết thúc. Sử dụng các hàm sau để lấy ảnh CvCapture * camera = cvCreateCameraCapture(-1); //Khởi tạo camera IplImage *pSaveImg = cvQueryFrame(camera); // Lấy frame từ camera Bước 3 : Chuyển kiểu IplImage sang QImage Mình dùng hàm sau để chuyển kiểu void putImage(IplImage *); void sipLCA:
utImage(IplImage *cvimage)//chuyen tu kieu IplImage sang QImage { int cvIndex, cvLineStart; switch (cvimage->depth) { case IPL_DEPTH_8U: //lua chon chieu sau cua 1 kenh co ban switch (cvimage->nChannels) { case 3: //lua chon 3 kenh co ban if ( (cvimage->width != image_temp.width()) || (cvimage->height != image_temp.height()) ) { QImage temp(cvimage->width, cvimage->height, QImage::Format_RGB32); image_temp = temp; } //chuyen doi chieu rong chieu cao dinh dang anh tu opencv sang qimage cvIndex = 0; cvLineStart = 0; for (int y = 0; y < cvimage->height; y++) { unsigned char red,green,blue; cvIndex = cvLineStart; for (int x = 0; x < cvimage->width; x++) { red = cvimage->imageData[cvIndex+2]; green = cvimage->imageData[cvIndex+1]; blue = cvimage->imageData[cvIndex+0]; image_temp.setPixel(x,y,qRgb(red, green, blue)); cvIndex += 3; } cvLineStart += cvimage->widthStep; //sao chep cac diem anh tu opencv sang qimage } break; } break; } } Đến đây thì bài toán đã quay về vd 1 rồi
Last edited by tuylipden; 21-09-2011, 00:09. Comment
Gửi bài viết Huỷ bỏ -
congtk88 Thành viên mới
- Tham gia: May 2010
- Bài viết: 6
- Share
-
Tweet
Bạn chọn Create Project Tiếp theo bạn chọn loại project, ở đây mình sử dụng là Qt C++ Project> Qt Gui Application. Cuối cùng mình ấn choose và cửa sổ đặt tên project hiện ra
Sau khi đặt tên bạn chọn Next thì Qt sẽ yêu cầu bạn đặt tên cho class khởi đầu của chương trình ( Đây chỉ là một thủ tục, bạn có thể đặt tên rồi khi viết chương trình không sử dụng class này cũng chẳng sao ).
Trong vd này mình đặt tên Class là ShowImage.Chọn Base class là QWidget (lớp giao diện).Cuối cùng ấn Finish để bắt đầu lập trình. Mình sẽ nói qua về các thành phần của một lớp trong QT Một lớp trong Qt sẽ bao gốm 3 thành phần là : Header file ( đuôi .h ), thành phần này có chức năng chứa các hàm, các biến toàn cục, con trỏ, hoặc cấp phát bộ nhớ cần khai báo để sử dụng trong class. Thành phần thứ hai là Source file ( đuôi .cpp ), thành phần này chứa các định nghĩa hàm, chức năng các hàm trong class. Đây là thành phần quan trọng nhất trong Qt. Thành phần thứ 3 là Form file ( đuôi .ui ). Tùy từng class và cách chọn của người sử dụng mà thành phần này có trong chương trình. Thành phần này giúp người sử dụng tạo giao diện dễ dàng hơn thông qua kéo thả đồng thời tương tác với các thành phần của giao diện ( button, label .... ) khá dễ dàng. Nếu không sử dụng thành phần này bạn cũng hoàn toàn có thể code giao diện trong file.cpp. Tất nhiên không thể thuận tiện và dễ quản lí như Form. Bước 2 :Sau khi tạo project thì chúng ta bắt đầu lập trình thôi Trước tiên mình vào form. Trong cột Project bạn click vào showimage.ui Trong form này mình kéo thả tạo ra 2 cái label với tên là lbl_Hello ( Cái này dùng để hiện thị chữ "Hello" ) và lbl_Image ( Cái này là để show ảnh ).
Sau khi tạo xong mình quay về showimage, viết chữ "Hello" bằng cách sử dụng hàm setText() Để hiện thị ảnh thì trước tiên bạn cần phải tạo một biết kiểu QImage ( Đây là một kiểu biến của Qt để xử lí ảnh) và load ảnh từ ổ cứng lên Chú ý bạn phải để ảnh trong thư mục build project nhé. Ở đây của mình là thư mục Home/test-build-desktop
Tiếp theo để hiện thị hình ảnh thì ta cần chuyển QImage sang lớp QPixmap sau đó hiển thị các Pixmap trên label (lbl_Image) Đến đây bạn có thể xem kết quả của mình rồi
MÌnh đã làm theo các bước mà bạn nói nhưng khi run thì nó lại thông báo lỗi [main.o] error 127.Bạn có thể giúp cho mình đc không.Cảm ơn nhiều nhé! Comment
Gửi bài viết Huỷ bỏ -
tuylipden Thành viên mới
- Tham gia: Sep 2011
- Bài viết: 13
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
ttnghiabk Thành viên mới
- Tham gia: Jun 2010
- Bài viết: 11
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
tuylipden Thành viên mới
- Tham gia: Sep 2011
- Bài viết: 13
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
tuylipden Thành viên mới
- Tham gia: Sep 2011
- Bài viết: 13
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ
Bài viết mới nhất Collapse -
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây! bởi dinhthuong92 Dạ, cảm ơn bác đã nghe qua và có lời khích lệ cháu ạ. Thật lòng cháu không dám nhận hai danh hiệu Kỹ sư và Nhạc sĩ đâu ạ, vì phải thật hiểu sâu nắm vững cơ, chứ thực lực cháu đây chỉ là biết chút ít thôi à. Về phần...
- Channel: Tâm tình dân kỹ thuật
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bác bởi bqviet Đơn giản thì có trải nghiệm này http://www.dientuvietnam.net/forums/...ch%C3%AA%CC%81 Chỉ phần cứng,...
- Channel: Điện tử công suất
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bác bởi Nexus 6P phức tạp quá, nếu mà có mạch làm sẵn thì ngon, e dùng 2 tấm pv loại 18v 55w thôi bác
- Channel: Điện tử công suất
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bác bởi Nexus 6P cảm ơn bác nhiều nha, để e nghiên cứu
- Channel: Điện tử công suất
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây! bởi vi van pham kỹ sư nhạc sĩ dinhthuong dạo này lên tay nghề khá quá. - Channel: Tâm tình dân kỹ thuật
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây! bởi dinhthuong92 Hát Mừng Sinh Nhật, sáng tác: HĐT, hòa âm-thể hiện: AI
https://youtu.be - Channel: Tâm tình dân kỹ thuật
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây! bởi dinhthuong92 Chào bác, gần Tết công việc bác bận lắm phải không? Vâng mọi người đều thế cả. Em mới trả phí cho nó 1 tháng, nhờ nó hát thử ấy ạ. Tiếc vì em đã dốt nhạc lí lại lười học nên sáng tác thì vụng về mà hát demo...
https://youtu.be - Channel: Tâm tình dân kỹ thuật
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bác bởi bqviet Cảm thấy cứng tay thì làm theo hướng dẫn khá chi tiết ở trang sau https://www.instructables.com/DIY-1k...ge-Controller/
- Channel: Điện tử công suất
-
Có mạch sạc nlmt nào có mppt không các bác bởi Nexus 6P Như tiêu đề, các bác giới thiệu e mạch sạc nlmt mppt có chức năng chỉnh dòng với, tấm PV của em 18V 55W, dùng để sạc cho khối pin sắt 3.2V 45A (sắp tới sẽ thay bằng ắc quy 12V) e cảm ơn
- Channel: Điện tử công suất
-
Máy phay CNC đứng Kitamura – tốc độ cao, chính xác cao cho mọi xưởng gia công bởi mylinhatt Nếu bạn đang tìm một dòng máy phay đứng CNC vận hành ổn định, gia công tinh chuẩn và tối ưu năng suất, thì Kitamura là lựa chọn rất đáng cân nhắc. Dòng máy này có kết cấu trục chính theo phương thẳng đứng, bàn máy nằm ngang và vận hành tự động thông qua điều khiển bằng máy tính...
- Channel: Điều khiển - Tự động hóa
Từ khóa » Cài đặt Qt Trên Ubuntu
-
Cài đặt Qt Creator Và Biên Dịch Chương Trình đầu Tiên Của Bạn Trên ...
-
Hướng Dẫn Cài QT-Creator Trên Ubuntu
-
Cách Cài đặt Qt Creator Trên Gnu / Linux
-
Cài đặt Qt Trên Ubuntu - HelpEx
-
Qt5 C++ - Hướng Dẫn Cài đặt Qt5 Trên Ubuntu 14.04 - YouTube
-
Huong Dan Cai Dat Qt Tren Ubuntu - YouTube
-
Biên Dịch Chương Trình Qt đầu Tiên Của Bạn Trong Ubuntu
-
Hướng Dẫn Cài Đặt QT4 Trên Ubuntu | Ông Bình
-
Lập Trình C++ Với Qt5.7 Trong Môi Trường Linux | Anh Nguyễn
-
[Series Lập Trình Qt] #1 Dowload Và Cài đặt IDE Qt Creator
-
QtCAM: Một ứng Dụng Tuyệt Vời Cho WebCam được Tạo Trong QT
-
Làm Cách Nào để Cài đặt PyQt Cho Python 3 Trong Ubuntu 14.10?
-
Install Qt 5 On Ubuntu - Qt Wiki