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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Открыть файл по клику из ListView  (Прочитано 5002 раз)
mdekalka
Гость
« : Июнь 12, 2012, 18:30 »

Добрый день. Имеется ListView с отображением каталогов и файлов. Пользователь ищет нужный ему файл(например *htm), кликает по нему, и файл открывается в TextEdit'e.

Код
ListView {
         id: listViewTree
         width: 285
         height: 120
 
        anchors.fill: parent
 
         model: VisualDataModel {
             model: dirModel
 
             delegate: Rectangle {
 
                 color: "lightblue"
                 width: 285; height: 25
                 Text { text: filePath }
 
                 MouseArea {
                     anchors.fill: parent
                     onClicked: {
                         if (model.hasModelChildren)
                             listViewTree.model.rootIndex = listViewTree.model.modelIndex(index)
 
 
                         else
                         {
                             console.log(filePath);
                             edit.text =  ??? как открыть вабранную htm'ку в TextEdit
 
                         }
 
 
 
                     }
                 }
             }
         }
     }
Заранее благодарен.
Записан
mutineer
Гость
« Ответ #1 : Июнь 12, 2012, 20:10 »

Ух и спрятал вопрос, фиг найдешь. Открывать файл нужно в плюсах и оттуда передавать текст в TextEdit
Все как с обычным QTextEdit
« Последнее редактирование: Июнь 12, 2012, 20:12 от mutineer » Записан
mdekalka
Гость
« Ответ #2 : Июнь 12, 2012, 20:46 »

Нашел открытие с TreeView в Qt по клику:

Код
C++ (Qt)
void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
 
 
qDebug()<<index.data().toString();
 
QFile file(index.data().toString());
   if (!file.open(QIODevice::ReadOnly))
   {
       qDebug() <<  "Cannot open a file";
   }
 
   QTextStream in(&file);
QString str = in.readAll();
 ui->textEdit->setText(str);
 
 
}

Кручу-верчу  - ничего не получается.
Записан
mutineer
Гость
« Ответ #3 : Июнь 12, 2012, 20:50 »

Значит не туда крутишь-вертишь))
Записан
mdekalka
Гость
« Ответ #4 : Июнь 12, 2012, 23:16 »

Ок, читаю файл:

Код
C++ (Qt)
QString MainWindow::WhereYourGodNow()
{
   QFile file(filePath);
   if (!file.open (QIODevice::ReadOnly))
        qDebug()<<"Not open file";
   QTextStream stream ( &file );
   QString line;
   while( !stream.atEnd() ) {
        line = stream.readLine();
        line = stream.readAll();
   }
   file.close();
return line;
}
 
Вызываю в QML ListView так:

Код
C++ (Qt)
...
                 MouseArea {
                     anchors.fill: parent
                     onClicked: {
                         if (model.hasModelChildren)
                             listViewTree.model.rootIndex = listViewTree.model.modelIndex(index)
 
 
                         else
                         {
                             console.log(filePath);
                             window.WhereYourGodNow(edit.text)
                         }

Кидается ошибка C++ Library, что делаю неправильно?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #5 : Июнь 13, 2012, 01:37 »

если файл не открылся, то надо сразу же выйти из метода (скорее всего тут и зарыта собака), а цикл вообще непонятно что делает (может из-за огромного размера файла программа падает).
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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