#c #qt #model #tree
#c #qt #Модель #дерево
Вопрос:
Я просмотрел документы qt с примерами древовидной модели. Я пытаюсь понять, как сопоставить мою структуру данных с моделью.
У меня есть массив mystructs, который я хотел бы отобразить в виде дерева, может кто-нибудь предложить какую-либо помощь о том, как это сделать. Структура показана ниже
struct mystruct{
int id;
float val;
struct settings{
QString setting_1;
QString setting_2;
bool on;
};
};
Я пытаюсь вписать эту структуру в пример qt simpletreemodel.
Спасибо
Комментарии:
1. Вам часто приходится взаимодействовать с вашей структурой из древовидного представления? Если нет, я не уверен, что вам следует заходить в view / model для такого простого объекта, как этот. Вы можете подумать о том, чтобы придерживаться
QTreeWidget
иQTreeWidgetItems
…2. да, мне нужно взаимодействовать с представлением
Ответ №1:
Вы могли бы сделать что-то подобное:
Реализовать дерево как QTreeWidget
class YourTreeWidget : public QTreeWidget
{
public:
...
//reimplement useful stuff of the QTreeWidget
//like onItemClicked(...)
};
Затем реализуйте элементы, привязанные к mystruct
экземпляру
class mystruct;
class YourTreeWidgetItem : public QTreeWidgetItem
{
public:
YourTreeWidgetItem(mystruct*);
mystruct* getData() { return data;}
private:
mystruct* data;
}
Позже создайте одну YourTreeWidget
и добавьте по одному элементу для каждого из mystruct
экземпляров, которые у вас есть в вашем массиве.
Не забудьте правильно отформатировать ваши QTreeWidget
данные в соответствии с данными, которые вы вводите в свои элементы.
setHeaderLabels( QStringList() << "Column 1" << "Column 2");
...
Опять же, это простое решение, но я думаю, что вы можете делать с этим сложные вещи.
ПРИМЕЧАНИЕ: когда я сказал
Вам нужно много взаимодействовать со структурой
Я имел в виду, нужен ли вам пользовательский выбор, пользовательская редакция, пользовательский дисплей…
Комментарии:
1. спасибо за ваше время, Винс, и да, древовидная модель будет использоваться несколькими различными представлениями