Здравствуйте, уважаемые знатоки! Я пишу свою небольшую библиотеку на C++ с использованием Qt и хочу сделать, чтобы она при подключении к другим моим программам не засирала их namespace Ui своими классами. Поясню что есть и что я хочу
//widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui
{
class Widget;
}
namespace lib_namespace
{
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
}
#endif // WIDGET_H
//widget.cpp
#include "widget.h"
#include "ui_widget.h"
using namespace lib_namespace;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
//main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
//Ui::Widget; //сейчас видно пользователю библиотеки
//lib_namespace::Ui::Widget; // а хотелось бы вместо этого как-то так
//lib_namespace::DoNotTouchIt::Ui::Widget; // или даже так
//А еще лучше, кроме lib_namespace::Widget'а ему вообще ни о чем не знать
QApplication a(argc, argv);
lib_namespace::Widget w;
w.show();
return a.exec();
Я тыкался-мыкался с namespace'ами и без ошибок компиляции ничего не получалось.