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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableView общие данные  (Прочитано 2712 раз)
romank
Гость
« : Октябрь 20, 2009, 11:26 »

Добрый день.

Создал свою реализацию QAbstractTableModel (Model) и QSortFilterProxyModel (Proxy). Данные для модели передаю через указатель. Для этого приходится делать следующее:

Код
C++ (Qt)
class ModelWellList : public QAbstractTableModel
{
public:
...
void setShareData(const SharedData*);
private:
...
const SharedData* m_data;
};
 

Однако и Proxy для работы необходимо знать данные, поэтому обеспечиваю Proxy данными:

Код
C++ (Qt)
class ProxyWellList: public QSortFilterProxyModel
{
public:
...
void setSharedData(const SharedData*);
private:
const SharedData* m_data;
 


Получается следующее. Из основного окна в виджет передаю общие данные
Код
C++ (Qt)
navigatorWidget->setShareData(&m_data);
 

Затем в виджете указатель передается в модель и прокси
Код
C++ (Qt)
modelWellList->setShareData(m_data);
proxyWellList->setSharedData(m_data);
 

Можете предложить более элегантное решение? m_data существует в программе в единственном экземпляре. Как создать "глобальный" указатель для всей программы, который будет доступен в каждом классе?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Октябрь 20, 2009, 18:44 »

Можете предложить более элегантное решение? m_data существует в программе в единственном экземпляре. Как создать "глобальный" указатель для всей программы, который будет доступен в каждом классе?
O,]

1) Объявляете указатель на  m_data, желательно в том файле где конструктор объекта с членом m_data

const SharedData* theSharedData = 0; 

2) В конструктор объекта добавляете theSharedData = m_data; Необязательно, но желательно/полезно в деструктор добавить theSharedData = 0;

3) В одном из .h файлов пишите

extern const SharedData* theSharedData;

Подсовываете этот .h файл всем кому он нужен
Записан
romank
Гость
« Ответ #2 : Октябрь 21, 2009, 07:57 »

Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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