Добрый день!
Возникла такая проблема. В общем нужно класс Qt упаковать в библиотеку. Библиотека в данном случае статическая. Очень хочется наиболее часто используемые классы поместить в библиотеку, и использовать эту библиотеку в многих проектах. В качестве классов будут выступать диалоги, отдельные виджеты, ну и просто наследники QObject.
Попалась мне на глаза статья на эту тему:
http://erudenko.com/wordpress/?p=100Но мне не нравятся уродливые макросы Q_DECLARE_PRIVATE, Q_D и т. д. Да и еще такой подход не решает все проблемы.
К примеру, если нужно скрыть класс диалога (имеющий привытные слоты, видеть которые клиенту совсем не обязательно), то данный метод не все скрывает.
class RefDialog : public QDialog
{
Q_OBJECT
private:
// Ui::RefDialog ui;
Ui::RefDialog* ui;
private slots:
void OnButtonInsert();
void OnButtonDelete();
void OnButtonSubmit();
void OnButtonClose();
public:
RefDialog(const QString& caption, QWidget *parent = 0, Qt::WFlags flags = 0);
void setModel(QSqlTableModel* model);
void hideColomn(int colomn);
void showColomn(int colomn);
~RefDialog();
};
Медоды
void OnButtonInsert();
void OnButtonDelete();
void OnButtonSubmit();
void OnButtonClose();
останутся видимыми всем, что не очень хочется.