2010-08-19 39 views
6

Một lượng lớn chức năng được nhân đôi giữa C++ và Qt chuẩn. Tại một số điểm có vẻ hợp lý nhưng nhiều lần nó trông ngu ngốc. Giống như tôi cảm thấy thích làm một ngôn ngữ lập trình mới, học những thứ mà tôi đã biết. ví dụ. sử dụng QFile.Qt: Các lớp Qt so với chuẩn C++

Ngoài ra nếu tôi làm tất cả cách Qt và giả sử bây giờ tôi muốn di chuyển ra khỏi khuôn khổ Qt nó sẽ là quá nhiều tẻ nhạt để viết lại mã đó. OTOH Tôi thích Qt vì nó cung cấp cho tôi các thư viện mà tôi sẽ phải tự nuôi cá mình như webkit, kết nối cơ sở dữ liệu, dbus, v.v.

Bạn gợi ý gì?

+0

Câu hỏi liên quan một chút: http://stackoverflow.com/questions/1668259/stl-or-qt-containers –

Trả lời

5

Vì không có GUI trong C++, bạn nên trừu tượng mã GUI từ phần còn lại của mã thực.

Sau đó, trong quá trình triển khai QT của bạn, việc trừu tượng GUI của bạn cảm thấy tự do để sử dụng mã QT.
Bạn cũng có thể viết Wx/Quartz GUI trừu tượng mà không ảnh hưởng đến mã thực.

Trong mã thực (là công việc được thực hiện) dính vào các công cụ tiêu chuẩn (hoặc libs nền tảng chéo gần như là tiêu chuẩn (tăng)). Người ta có thể lập luận rằng QT là nền tảng chéo. Chỉ cần nhớ rằng bằng cách sử dụng một lib ở đây sẽ được kết nối chặt chẽ mã của bạn lib, do đó giải nén nó ngày sau sẽ không tầm thường. (xem câu hỏi trước về việc xóa Rouge Wave khỏi ứng dụng cũ)

3

Tôi làm tất cả các lớp thu thập trong std :: nó rõ ràng hơn cho các nhà phát triển Qt không và di động nhiều hơn.

Chuỗi và danh sách chuỗi Tôi sử dụng các thuật ngữ Qt bên trong hàm Qt thuần túy đang thực hiện giao diện GUI-ish nhưng nếu không thì hãy sử dụng std :: String. Mặc dù định dạng Qt .arg() đẹp hơn rất nhiều so với chuỗi

+0

Các vùng chứa được cung cấp với Qt có dấu chân nhẹ hơn vì chúng tận dụng [chia sẻ ẩn] (http://doc.qt.nokia.com/4.6/implicit-sharing.html), hơn nữa chúng cung cấp [trình lặp vòng kiểu Java] (http://doc.qt.nokia.com/4.6 /containers.html#java-style-iterators). Vì vậy, tôi khuyên bạn nên sử dụng chúng thay vì STL. –

+0

có tăng :: định dạng cung cấp cách tốt nhất để xuất. – rriemann