Russian Qt Forum

Qt => Qt Quick => Тема начата: mdekalka от Июнь 12, 2012, 18:30



Название: Открыть файл по клику из ListView
Отправлено: 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
 
                         }
 
 
 
                     }
                 }
             }
         }
     }
Заранее благодарен.


Название: Re: Открыть файл по клику из ListView
Отправлено: mutineer от Июнь 12, 2012, 20:10
Ух и спрятал вопрос, фиг найдешь. Открывать файл нужно в плюсах и оттуда передавать текст в TextEdit
Все как с обычным QTextEdit


Название: Re: Открыть файл по клику из ListView
Отправлено: mdekalka от Июнь 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);
 
 
}

Кручу-верчу  - ничего не получается.


Название: Re: Открыть файл по клику из ListView
Отправлено: mutineer от Июнь 12, 2012, 20:50
Значит не туда крутишь-вертишь))


Название: Re: Открыть файл по клику из ListView
Отправлено: mdekalka от Июнь 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, что делаю неправильно?


Название: Re: Открыть файл по клику из ListView
Отправлено: kambala от Июнь 13, 2012, 01:37
если файл не открылся, то надо сразу же выйти из метода (скорее всего тут и зарыта собака), а цикл вообще непонятно что делает (может из-за огромного размера файла программа падает).