2010-07-07 21 views
15

thể trùng lặp:
Qt equivalent of PathAppend?Cross-nền tảng cách xây dựng một con đường FS với Qt

câu chuyện ngắn: không Qt 4 có một tương tự của Python của os.path.join?

Câu chuyện dài: Tôi cần phải thêm đường dẫn tương đối vào thư mục ứng dụng, QCoreApplication::applicationDirPath() ở bên phải (TM), để mã không phụ thuộc vào ký tự phân cách thư mục hệ thống tệp.

Chỉ đang tham gia QStrings và sử dụng "/" làm trình phân cách là giải pháp tốt?

+0

Quá tải toán tử có thể bị lạm dụng, nhưng quá tải 'toán tử /' đối với đường dẫn thì không. 'QCoreApplication :: applicationDirPath() /" MySubDir "' là mã hoàn toàn hợp lý. Qt4 xấu hổ không có điều đó. – MSalters

+0

Tại sao không sử dụng [QDir] (http://doc.qt.nokia.com/4.6/qdir.html) hoặc tương tự? – codymanix

+0

Vì tôi không thấy phương pháp QDir thực hiện chính xác những gì tôi cần. Bạn có thể vui lòng cụ thể hơn về những gì bạn đề xuất không? – dpq

Trả lời

13

Bạn có thể sử dụng "/" trực tiếp hoặc sử dụng QDir::separator(). Nhưng nói chung sử dụng một QDir cho điều này (mà dịch "/" để tách đường dẫn nền tảng cụ thể cho bạn).

14

Từ Qt 4.6 QDir tài liệu,

Qt sử dụng "/" như một dấu phân cách thư mục phổ biến trong cùng một cách mà "/" được sử dụng như một dấu phân cách đường dẫn trong URL. Nếu bạn luôn sử dụng "/" làm dấu tách thư mục, Qt sẽ dịch đường dẫn của bạn để phù hợp với hệ điều hành cơ bản.

Vì vậy, tôi đoán QDir sẽ hữu ích cho bạn.

+0

+1 cho tài liệu. Dù sao, '/' là một người seperator khá phổ biến. Nó mặc định trên POSIX, Mac OS và được hỗ trợ (chính thức) bởi Windows. – rubenvb

4

Chỉ cần sử dụng "/" khi ở trong thế giới Qt. Để chuyển đổi đường dẫn cho các lớp và chức năng không phải Qt, vv, hãy sử dụng QDir :: toNativeSeparators (đường dẫn).

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