2011-02-05 6 views
10

Trình tạo Qt có tùy chọn để quảng cáo một tiện ích cho lớp được tạo tùy chỉnh xuất phát từ tiện ích cơ sở - Tôi muốn sử dụng tiện ích đó để quảng bá tiện ích con cho lớp trong dự án hiện tại. Người tạo Qt hỏi tôi về tên lớp và tên tệp tiêu đề và các giá trị đó chuyển trực tiếp đến * .ui tệp và sau đó đến ui_myform.h - vấn đề là tệp này có thể (và thường là) được tạo bên ngoài cây nguồn (trong xây dựng cây) có thể được tại vị trí tùy ý, do đó, đặc điểm kỹ thuật trực tiếp của con đường trong việc thúc đẩy cửa sổ sẽ không giúp đỡ. Làm thế nào để cho QtCreator/uic biết nơi để tìm tiêu đề phải không? Thậm chí có thể không?Quảng cáo tiện ích trong Qt Creator

Có lẽ có một số biến Qt specyfying vị trí của cây nguồn, mà tôi có thể chèn vào trường tên tập tin tiêu đề?

Tôi đang sử dụng QtCreator 2.0.1 + tự biên dịch Q.1 4.7.1.

EDIT:

Tại sao không thể bạn chỉ cần gõ vào tên đường dẫn đầy đủ của tập tin tiêu đề?

Nếu tôi di chuyển cây nguồn, hoặc thậm chí chia sẻ trên web - thì mọi người muốn biên dịch dự án của tôi sẽ phải chỉnh sửa đường dẫn này trong người tạo Qt hoặc trong tệp nguồn - cả hai đều không thể chấp nhận.

+0

Tại sao bạn không thể nhập tên đường dẫn đầy đủ của tệp tiêu đề? – TonyK

Trả lời

18

Các tập tin tiêu đề mà nhà thiết kế sẽ yêu cầu bạn cho vào hộp thoại khuyến mãi tập tin tiêu đề của riêng bạn mà xác định widget tùy chỉnh, chứ không phải được tạo ra ui _ *. H tập tin.

Giả sử bạn muốn thúc đẩy một đồng bằng QWidget-MyCustomWidget, bạn đã phải có một MyCustomWidget.h định nghĩa lớp MyCustomWidget của bạn bao gồm trong .pro tập tin của bạn như thế này:

HEADERS += MyCustomWidget.h 

Và trong hộp thoại quảng cáo tiện ích, chỉ cần nhập MyCustomWidget.h. Mục đích của nó là do đó tập tin tiêu đề ui được tạo ra (bất cứ nơi nào nó) có thể bao gồm định nghĩa lớp học CỦA BẠN.

2

Tôi đã tìm ra điều này - tôi đang quảng bá cho lớp học của mình và đặt tên tiêu đề được viết tự viết, đó là chính xác.

Vấn đề là đây (tự viết) tập tin là không trực tiếp trong thư mục dự án nhưng trong src thư mục con (nơi mà tất cả những người khác nguồn cũng có), tôi không sử dụng subdirs mẫu, nhưng chỉ đơn giản là thêm chúng như

SOURCES += src/myWidget.cpp 

Tùy chọn quảng cáo không yêu cầu đường dẫn đầy đủ, nhưng nó cần nó xuất hiện trong tệp *.pro - trong trường hợp này, chuyển từ myWidget.h thành src/myWidget.h và nó sẽ hoạt động nếu tôi di chuyển hoặc chia sẻ.

1

Nếu phát huy hình thức phụ tùng (.ui) và lớp file (.cpp, .h) đang ở trong một thư mục con dự án Qt Creator và giải pháp j_kubik của không giúp nó hiển thị lỗi ("foo.h not found"), cố gắng sử dụng chỉ là tên tập tin tiêu đề cho việc thúc đẩy và cung cấp đường dẫn như INCLUDEPATH trong tệp .pro.

+0

Tôi rất thích điều này. Nếu bạn có các thư mục con thì bạn đặt các tệp .ui và .cpp/.hpp của mình, bạn sẽ cần thêm một INCLUDEPATH để nằm trong tiêu đề của lớp – Zardoz89