2013-06-18 19 views
9

Tôi muốn có một lớp UI trong không gian tên riêng của nó, như ProjectName :: MainWindow. Có một số cách thuận tiện làm thế nào để đạt được điều này trong Qt Creator, xin vui lòng?Qt Creator - không gian tên tùy chỉnh cho các lớp UI

Tôi có thể mở tệp mainwindow.ui và thay đổi từ "MainWindow" thành "ProjectName :: MainWindow", biên dịch và hoạt động. Nhưng khi tôi thay đổi một cái gì đó trong thiết kế giao diện người dùng, tệp ui được tạo lại ... với tên lớp sai.

+0

Bạn đang nói về lớp biểu mẫu của riêng bạn (theo mặc định trong không gian tên mặc định và nguồn của nó nằm trong dự án) hoặc về lớp giao diện người dùng do Qt tạo (theo mặc định trong không gian tên 'Ui' và khai báo của nó được lưu trữ trong Tệp 'ui_ClassName.h' do Qt tạo)? –

+0

Của riêng tôi. Nhưng lớp được tạo ra cũng phải ở trong không gian tên propper. Id est: ProjectName :: MainWindow cho riêng tôi và ProjectName :: Ui cho một tạo ra. – eMko

Trả lời

15

Khi bạn tạo Lớp biểu mẫu thiết kế mới, hãy chỉ định tên lớp có không gian tên, ví dụ: ProjectName::MainWindow. Qt Creator sẽ tự động tạo mã sau đây.

MainWindow.h:

namespace ProjectName { 
    namespace Ui { 
    class MainWindow; 
    } 
    class MainWindow : public QWidget { 
    Q_OBJECT  
    public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow();  
    private: 
    Ui::MainWindow *ui; 
    }; 
} // namespace ProjectName 

MainWindow.ui:

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>ProjectName::MainWindow</class> 
<widget class="QWidget" name="ProjectName::MainWindow"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>400</width> 
    <height>300</height> 
    </rect> 
    </property> 
    <property name="windowTitle"> 
    <string>Form</string> 
    </property> 
</widget> 
<resources/> 
<connections/> 
</ui> 

Như bạn thấy, cả hai MainWindowUi::MainWindow đang trong ProjectName namespace.

+1

Trong phần bổ trợ, bạn thậm chí không cần chỉnh sửa tài liệu XML. Bạn chỉ cần chỉnh sửa thuộc tính tên bên trong QtDesigner – RobbieE

+1

Bí quyết trong câu trả lời (Qt creator 2.7.0) chỉ hoạt động khi thêm một lớp, không phải khi tạo dự án - trình thủ thuật than phiền về các ký tự không hợp lệ trong tên lớp. Điều đó làm tôi bối rối ... Chỉnh sửa tài sản trong QtDesigner cũng hoạt động. Cảm ơn nhiều! – eMko

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