#include "mainwindow.h"
#include <QStyle>
#include <QMessageBox>
#include <QList>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
view = new QListWidget (this);
this->setCentralWidget(view);
VFile f;
f.id=0;
f.isFolder=true;
f.name="/";
f.parent=0;
f.text="";
files.insert(0, f);
f.id=1;
f.isFolder=true;
f.name="folder";
f.parent=0;
f.text="";
files.insert(1, f);
f.id=2;
f.isFolder=false;
f.parent=0;
f.name="file";
f.text="Hello, world!";
files.insert(2, f);
f.id=3;
f.isFolder=false;
f.parent=1;
f.name="file";
f.text="Hi!";
files.insert(3, f);
now = files[0];
connect (view, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(cd()));
toList();
}
void MainWindow::toList()
{
view->clear();
int counter = 1;
QListWidgetItem *item = new QListWidgetItem;
item->setText("..");
item->setIcon(style()->standardIcon(QStyle::SP_DirIcon));
view->insertItem(0, item);
for (int i = 0; i < files.count(); i++)
{
if (files[i].parent == now.id && files[i].id != now.id)
{
item = new QListWidgetItem;
if (files[i].isFolder) item->setIcon(style()->standardIcon(QStyle::SP_DirIcon));
else item->setIcon(style()->standardIcon(QStyle::SP_FileIcon));
item->setText(files[i].name);
view->insertItem(counter, item);
counter++;
}
}
}
void MainWindow::cd()
{
QString selected = view->currentItem()->text();
if (selected=="..")
{
now = files [now.parent];
return;
}
for (int i = 0; i < files.count(); i++)
{
if (files[i].parent == now.id && files[i].text == selected) now = files[i];
}
toList();
}
Отладчик показывает что падает на строке
QString selected = view->currentItem()->text();
В стеке вызовов последняя функция text(). SIGSEGV. Почему?