Russian Qt Forum
Сентябрь 21, 2024, 13:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Реализация класса в библиотеке  (Прочитано 2222 раз)
silart
Гость
« : Сентябрь 08, 2010, 12:25 »

Добрый день!
Возникла такая проблема. В общем нужно класс 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();

останутся видимыми всем, что не очень хочется.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Сентябрь 08, 2010, 13:04 »

есть макрос Q_PRIVATE_SLOT который позволяет реализовать слот в Private-классе.
Если вам не нравятся макросы, то реализуйте pimpl ручками. Или забейте на него вовсе
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.111 секунд. Запросов: 22.