crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> делаю свой класс. Правильное ли направление я выбрал?
zazaqwer
  опции профиля:
сообщение 29.5.2015, 12:04
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 29.5.2015
Пользователь №: 4391

Спасибо сказали: 0 раз(а)




Репутация:   0  


Делаю класс, который будет отображать и редактировать таблицу из базы данных.
На форму разместил QTableWidget, отобразил на нему табличку из QSqlQuery, и добавил на форму кнопочки добавления и удаления строк, что бы редактирование было напрямую в таблицу, типа экселя.
А теперь эту схему хочу оформить в виде класса, что бы стандартизировано цеплять это множество взаимодействий к любой таблице на форме.
На вскидку можно сделать класс
class MyWrapper : public QObject {
      QTableWidget* tbl;
public:
      MyWrapper(QTableWidget* _tbl) : tbl(_tbl) {
            tbl->installEventFilter(this);
            tbl->setProperty("MyWrapper", QVariant((qlonglong)tbl));
      }
};

и в него запихать всю логику.
Или нужно это по другому организовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zazaqwer
  опции профиля:
сообщение 29.5.2015, 14:15
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 29.5.2015
Пользователь №: 4391

Спасибо сказали: 0 раз(а)




Репутация:   0  


неправильно написал строку в прошлом посте:
tbl->setProperty("MyWrapper", QVariant(ptr<TMyWrapper>(this));


а управление этим объектом делается через
QCoreApplication::sendEvent(tblWidget, MyEvent)

или
tblWidget->property("MyWrapper").value<ptr<TMyWrapper> >()->DoSomething();

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 29.5.2015, 21:14
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


... но зачем?
Ведь можно использовать слоты/сигналы.
Можно использовать QSqlTableModel.
В конце концов просто создать свой виджет, который группирует кнопки и таблицу и в него вписать всю логику, которая по идее должна быть завязана на интерфейс QAbstractTableModel.
Делать свои события - YAGNI, уж поверьте.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.7.2015, 20:54
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Правльный вариант, как сказал lanz:
QTableView + Своя модель, которая реализует сохранение в БД + Виджет управления.

В первый раз такую модель делать будет тяжко, зато потом много где пригодится.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 4:44