Qt GUI - przestrzeń nazw Ui

0

W Qt Creatorze przy wyborze typu aplikacji qt gui zostaje wygenerowany automatycznie kod. Przykładowy plik mainwindow.h przedstawia się następująco:

 
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

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

#endif // MAINWINDOW_H

Jaką rolę pełni w tym przypadku przestrzeń nazw Ui ? Czy powyższa deklaracja przestrzeni nazw jest równoznaczna z konstrukcją typu:

 
namespace Ui
{
     class MainWindow : public QMainWindow
     {
          //kod
     };
}
0

Mniej wiecej po to, po co sa w ogole przestrzenie nazw. Unikanie kolizji. Dodatkowo od razu mozna sie zorientowac, ze dany obiekt zostal wygenerowany, patrzac na deklaracje.

0

Twoja interpretacja deklaracji jest nie do końca poprawna. W namespace Ui siedzi klasa wygenerowana przez moc, możesz ją znależć w pliku ui_mainwindow.h. Wygląda ona mniej więcej tak:

class Ui_MainWindow
{
// definicje pól i metod wygenerowanych przez moc
};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

1 użytkowników online, w tym zalogowanych: 0, gości: 1