Russian Qt Forum
Ноябрь 25, 2024, 11:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeWidget  (Прочитано 4721 раз)
olefard
Гость
« : Октябрь 27, 2009, 14:31 »

Есть QTreeWidget как правильно обработать сигнал ItemClicked(), чтобы открывались разные HTML файлы в соседнем textbrowser, взависимости от того какой item выбран...помогите очень срочно надо, парюсь уже часа 3, может пример какой-нибудь есть
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Октябрь 27, 2009, 17:38 »

Давай сюда код того как делаешь и что именно не получается, потому что по таким данным ничего точно ответить нельзя.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
olefard
Гость
« Ответ #2 : Октябрь 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 отображалась одна страница, по нажатию на другой другая
Записан
olefard
Гость
« Ответ #3 : Октябрь 27, 2009, 17:52 »

Ну т.е. вопрос глупый, только сильно не бейте, как узнать какой item выбран
Записан
BaltikS
Гость
« Ответ #4 : Октябрь 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()));
}
Конечно черз (!)-пу, но я думаю понятно...что к чему...
Записан
fuCtor
Гость
« Ответ #5 : Октябрь 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());

    }

Вот как-то так. Могу где-то ошибиться, но принцип такой.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 22.