Russian Qt Forum

Qt => Общие вопросы => Тема начата: xTr1m от Март 04, 2012, 05:30



Название: Автоматизировать таблицу
Отправлено: xTr1m от Март 04, 2012, 05:30
Здравствуйте, хотел поросить совета в организации кода. Хочу сделать следующее:

есть таблица (например, QTableWidget), есть классы разных элементов (инструмент, машина, работник и т.п.). Хочу отнаследоваться от QTableWidget и делать примерно так

Код:
// так выглядит определение
QTableColumn* QTableWidgetEx::addStringColumn(const QString &title, const QString &propertyName);
bool QTableWidgetEx::addItem(QObject *item);

// добавляю колонки
m_table->addStringColumn(tr("Identification"), "id");
m_table->addStringColumn(tr("Name"), "name");
m_table->addStringColumn(tr("Description"), "description");

// добавляю объект
QCar *newCar = new QCar();
newCar->setId(tr("SX4"));
newCar->setName(tr("Suzuki"));
newCar->setDescription(tr("Simple 4x4"));
m_table->addItem(newCar);

то есть хочется определить колонку, указать свойство, за которое она будет отвечать, а потом просто сказать "добавь элемент". а таблица уже будет сама "дергать" свойства объекта. смущает два момента:

1) Нужно будет дублировать название свойства (один раз в классе объекта и каждый раз когда я буду создавать таблицу). То есть, если название свойства поменяется, то нужно будет менять везде.
2) Не будет ли такой вариант с "дерганием" свойств для каждого значения в таблице медленным (при количестве элементов > 10000).

Может я придумываю влосипед? Спасибо.


Название: Re: Автоматизировать таблицу
Отправлено: mutineer от Март 04, 2012, 10:58
ИМХО лучше использовать QTableView и свою модель


Название: Re: Автоматизировать таблицу
Отправлено: xTr1m от Март 04, 2012, 16:46
А чем лучше? Нужно будет для каждого типа объекта создавать класс, отнаследованный от qabstractitemview? Просто не особо понял разницу.


Название: Re: Автоматизировать таблицу
Отправлено: kambala от Март 04, 2012, 17:31
QTableView - это визуальная таблица, элементами таблицы ты будешь управлять в подклассе QAbstractTableModel