Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: olefard от Октябрь 27, 2009, 14:31



Название: QTreeWidget
Отправлено: olefard от Октябрь 27, 2009, 14:31
Есть QTreeWidget как правильно обработать сигнал ItemClicked(), чтобы открывались разные HTML файлы в соседнем textbrowser, взависимости от того какой item выбран...помогите очень срочно надо, парюсь уже часа 3, может пример какой-нибудь есть


Название: Re: QTreeWidget
Отправлено: Пантер от Октябрь 27, 2009, 17:38
Давай сюда код того как делаешь и что именно не получается, потому что по таким данным ничего точно ответить нельзя.


Название: Re: QTreeWidget
Отправлено: olefard от Октябрь 27, 2009, 17:51
Есть QTreeWidget заполненный , есть
Код:
void Form::on_treeWidget_itemClicked(QTreeWidgetItem* item, int column)
{
 
   m_ui->textBrowser->setSource(QUrl("file:///E:/Qt/My/Newpro/lex_1.html"));

    }

Так в textBrowser отображается страница по нажатию на item, нужно чтобы по нажатию на этот item отображалась одна страница, по нажатию на другой другая


Название: Re: QTreeWidget
Отправлено: olefard от Октябрь 27, 2009, 17:52
Ну т.е. вопрос глупый, только сильно не бейте, как узнать какой item выбран


Название: Re: QTreeWidget
Отправлено: BaltikS от Октябрь 27, 2009, 17:58
Проще не придумал....записать в дерево можно например так:
Код:
// create First item
QTreeWidgetItem *item = new QTreeWidgetItem(ui.treeWidget);
item->setText(0, tr("First Item"));
item->setData(0, Qt::UserRole, QString("c:/index.html"));

// create Second item
item = new QTreeWidgetItem(ui.treeWidget, item);
item->setText(0, tr("Child Item"));
item->setData(0, Qt::UserRole, QString("c:/child.html"));
...
connect(ui.treeWidget, SIGNAL(itemSelectionChanged () ), SLOT(on_itemSelectionChanged () ));
...
void myForm::on_itemSelectionChanged ()
{
   if (!ui.treeWidget->currentItem()) return;

   ui.textBrowser->setSource(QUrl(ui.treeWidget->currentItem()->data(0, Qt::UserRole).toString()));
}
Конечно черз (!)-пу, но я думаю понятно...что к чему...


Название: Re: QTreeWidget
Отправлено: fuCtor от Октябрь 27, 2009, 18:01
При создании дерева, если не ошибаюсь, добавляются QTreeWidgetItem. Уданного класса есть метод:
virtual void setData ( int column, int role, const QVariant & value )

Объявляешь константу:
int MyURLData = Qt::UserRole +1;

И  коде при создании нужных итомов выполняешь:
item->setData(0 /*номер колонки*/, MyURLData, QUrl("НУЖНЫЙ УРЛ"));

А при нажатии:
void Form::on_treeWidget_itemClicked(QTreeWidgetItem* item, int column)
{
  
   m_ui->textBrowser->setSource(item->data(0, MyURLData ).toUrl());

    }

Вот как-то так. Могу где-то ошибиться, но принцип такой.