Название: Выбор элементов QTreeWidget
Отправлено: Gomerd от Ноябрь 01, 2010, 16:23
Здравствуйте. Имеется проблема: есть некая форма, на которой находиться QTreeWidget. При создании главного окна происходит заполнение из базы данных (Sqlite 3, при чем баз несколько). При этом происходит создание объектов собственных классов. // собственный класс class disciplines { private: QString shortName; QString longName; QString prepod; QString dolgnost; QString data; test finTest; QTreeWidgetItem dI;
public:
disciplines( QString sN, QString lN, QString p, QString d, QString dataC, test t, QTreeWidgetItem as ) : shortName(sN), longName(lN), prepod(p), dolgnost(d), data(dataC), finTest(t), dI(as) {}
В MainWindow.cpp создается указатель на массив этих объектов, которые создаются при построения дерева. Дальше мне требуется при клике по нужному итему выводить на экран содержимое его полей. Нечто вроде этого: void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem* item, int column) { if (item == treeItem) { ui->shortNameEdit->setText(disc[2]->returnShortName()); ui->LongNameEdit->setText(disc[2]->returnLongName()); ui->dolgnostEdit->setText(disc[2]->returnDolgnost()); ui->prepodEdit->setText(disc[2]->returnPrepod()); ui->dateEdit->setText(disc[2]->returnDate()); } }
Где treeItem - элемент дерева. Проблема в том, что выводит информацию только у последнего созданного элемента(т.к. они создавались в цикле). Может у кого то возникнут идеи, что делать. З.Ы. извините за косноязычное объяснение
Название: Re: Выбор элементов QTreeWidget
Отправлено: GreenGo от Ноябрь 01, 2010, 19:40
Я так понимаю, тебе для каждого QTreeWidgetItem, надо подставлять данные из объекта типа disciplines. можно создать контейнер типа: QMap <QTreeWidgetItem *, disciplines *> и заполнять его по мере создания классов типа disciplines. Тогда обработчик клика будет выглядеть так: void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem* item, int column) { // допустим discMap - наш контейнер if (discMap.contains(item)) { ui->shortNameEdit->setText(discMap [item]->returnShortName()); ui->LongNameEdit->setText(discMap [item]->returnLongName()); ui->dolgnostEdit->setText(discMap [item]->returnDolgnost()); ui->prepodEdit->setText(discMap [item]->returnPrepod()); ui->dateEdit->setText(discMap [item]->returnDate()); } }
Название: Re: Выбор элементов QTreeWidget
Отправлено: Gomerd от Ноябрь 01, 2010, 19:48
Спасибо, буду пробовать :)
Название: Re: Выбор элементов QTreeWidget
Отправлено: Gomerd от Ноябрь 02, 2010, 20:20
все работает, спасибо за совет :)
|