2013-06-18 10 views
9

Chciałbym mieć klasę UI w jej własnej przestrzeni nazw, jak ProjectName :: MainWindow. Czy jest jakiś wygodny sposób, aby to osiągnąć w Qt Creator?Qt Creator - niestandardowy obszar nazw dla klas interfejsu użytkownika

Mogę otworzyć plik mainwindow.ui i zmienić z "MainWindow" na "ProjectName :: MainWindow", który kompiluje i działa. Ale kiedy zmienię coś w projektancie UI, plik ui zostanie wygenerowany ponownie ... z niewłaściwą nazwą klasy.

+0

Czy mówisz o własnej klasie formularza (domyślnie jest to domyślna przestrzeń nazw, której źródłem jest projekt) lub o klasie UI generowanej przez Qt (domyślnie w przestrzeni nazw 'Ui' i jej deklaracja jest przechowywana w Qt-generowany plik 'ui_ClassName.h')? –

+0

Moje własne. Ale wygenerowana klasa powinna również znajdować się w przestrzeni nazw pakietu Propper. Id est: ProjectName :: MainWindow dla mojego i ProjectName :: Ui dla wygenerowanego. – eMko

Odpowiedz

15

Podczas tworzenia nowej klasy formularzy projektanta podaj nazwę klasy z obszarem nazw, np. ProjectName::MainWindow. Qt Creator automatycznie wygeneruje następujący kod.

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> 

Jak widać, zarówno MainWindow i Ui::MainWindow są teraz w ProjectName nazw.

+1

W dodatku, nie trzeba nawet edytować dokumentu XML. Możesz po prostu edytować właściwość nazwy wewnątrz QtDesigner – RobbieE

+1

Sztuczka w odpowiedzi (twórca Qt 2.7.0) działa tylko podczas dodawania klasy, a nie podczas tworzenia projektu - kreator narzeka na nieprawidłowe znaki w nazwie klasy. To mnie zaskoczyło ... Edycja nieruchomości w QtDesigner też działa. Dziękuję Ci bardzo! – eMko

Powiązane problemy