2009-08-28 25 views
5

Tôi đã viết chương trình C++ và tôi muốn viết GUI cho nó. Tôi nhận ra Qt là một công cụ tuyệt vời, tuy nhiên, Qt có các lớp riêng của nó, khiến tôi khá bối rối. ví dụ: thay vì String, Qt có một lớp có tên là QString ..Giao diện người dùng Qt cho dự án C++ hiện có

Tôi tự hỏi liệu mình có thể kết hợp mã C++ và mã Qt trong C++ không?

+0

JFYI nó được viết là Qt chứ không phải QT. –

+0

cảm ơn. Tôi chỉ cần thay đổi nó trở lại ~ – Lily

Trả lời

7

Có bạn có thể trộn lẫn Qt và STL rất dễ dàng.

GUI mất QString s nhưng âm thầm sẽ tạo ra những hình thức std::string hoặc char*, QStrings trở về từ Qt có thể được chuyển đổi với toStdString() hoặc toAscii().

Qt bao gồm một tập hợp các lớp sưu tập nhưng bạn không phải sử dụng chúng.

Qt thực hiện một công việc tốt giống như C++ hiện đại, có một vài 'tính năng bổ sung' để xử lý tín hiệu và cơ chế sự kiện khe nhưng đây là một sự phức tạp hơn đối với môi trường xây dựng so với mã.

chỉnh sửa: cảm ơn hóa đơn

+2

Bạn thậm chí có thể sử dụng QString :: toStdString()/QString :: toStdWString() :) – Bill

+0

QString không được xây dựng ngầm từ một chuỗi std ::. Không có hàm tạo nào như vậy. 'error: conversion từ 'std :: string' thành loại không phải là vô hướng 'QString' được yêu cầu' Tuy nhiên, bạn có thể nói' QString x = myStdString.c_str(); ' – leemes

0

trong ngắn hạn, có bạn có thể! ví dụ, một QString về cơ bản là một chuỗi và có một phương thức toAscii(), vì vậy bạn có thể dễ dàng sử dụng Qt cho các dự án của mình. Mặc dù bạn MIGHT gặp phải một số vấn đề khi tích hợp Qt vào studio trực quan (giả sử bạn đang sử dụng nó), bạn sẽ có thể kết hợp mã C++ và mã Qt (trong C++)

0

yeah! Qt là thứ bạn có thể sử dụng trong mã C++. Qt chủ yếu dành cho GUI nhưng đó là các lớp học tốt cho Socket, Containers, Network, ... Bạn được tự do sử dụng STL và các lớp bình thường khác hoặc các lớp Qt cung cấp cho bạn. Điểm lớn nhất là nếu bạn sử dụng Qt trong mã của bạn trước khi biên dịch chính, bạn nên làm một biên dịch meta để làm cho nó sẵn sàng cho trình biên dịch của bạn. Một điều bạn nên lưu ý là Qt không phải là tiêu chuẩn nó có nghĩa là mặc dù nó hỗ trợ Windows, Linux và Mac OS, nó sẽ không thể sử dụng được trên các nền tảng khác.

0

Chúng có thể được sử dụng cùng nhau.

C++ có lịch sử lâu dài và việc triển khai và hỗ trợ STL đã phát triển bằng ngôn ngữ. Tôi nghĩ rằng nhóm cựu Trolltech đã quyết định rằng họ không có đủ quyền kiểm soát chất lượng và tính khả dụng của các triển khai STL để làm cho thư viện Qt phụ thuộc vào nó. Kết quả là Qt có QTL, QtAlgorithms header và QString.

Họ đã đưa về chăm sóc cho phù hợp với STL:

  • nhất container có một giao diện tương tự như những STL (ví dụ: Truy cập iterator, push_back(), trống(), vv)
  • container Qt có thể được chuyển đổi sang/từ container STL (ví dụ: QVector :: toStdVector, QList :: fromStdList)
  • container Qt có thể được sử dụng với các thuật toán STL
  • QString có thể được chuyển đổi sang/từ std :: string và std :: wstring với toStd (W) Chuỗi/fromStd (W) Chuỗi

Cá nhân, tôi thích QString hơn std :: string, dễ sử dụng hơn và mạnh mẽ hơn.

0

Có thể.

Tôi thực sự đã tạo một trình bao bọc Qt-GUI cho một tập hợp các hàm dựa trên C. Không có vấn đề với việc tích hợp Qt, chỉ có mức C thấp (mà rò rỉ bộ nhớ ...).

Xem ở đây: http://code.google.com/p/qhocr/

1

sẽ không tôi khuyên bạn nên trộn std C++ và mã Qt với nhau.

Giả sử, mã C++ của bạn là logic, sau đó mã Qt, nên chỉ dành cho GUI. Sử dụng các mẫu MVC/MVP hoặc tương tự, tách logic và giao diện người dùng của bạn.

Do đó, sẽ dễ dàng hơn trong tương lai để có thể chạy mã của bạn có/không sử dụng giao diện người dùng.

Các vấn đề liên quan