Russian Qt Forum

Qt => Общие вопросы => Тема начата: demaker от Сентябрь 16, 2013, 12:31



Название: Указатели
Отправлено: demaker от Сентябрь 16, 2013, 12:31
Подскажите в чем баг???
Код
C++ (Qt)
 
connect(treeview,SIGNAL(clicked(QModelIndex)),this,SLOT(clickedTreeView(QModelIndex)));
...
void MainWindow::clickedTreeView(QModelIndex index)
{
   currentModelIndex = new QModelIndex;
   currentModelIndex = &index;
 
   currentElement = reinterpret_cast<CommonElement*>(currentModelIndex->internalPointer());
   CommonElement *element = reinterpret_cast<CommonElement*>(currentModelIndex->internalPointer());
   listmodel->setRoot(element);
   setPathLabel(element);
}
 
void MainWindow::appendElement()
{
if((currentModelIndex != NULL) && currentModelIndex->isValid())
   {
       qDebug()<<reinterpret_cast<CommonElement*>(currentModelIndex->internalPointer()); //вылетает на этой строчке пишет Ошибка с кодом 255
       CommonElement *element = reinterpret_cast<CommonElement*>(currentModelIndex->internalPointer());
       element->appendChild();
       Q_EMIT refreshTreeModel(root);
       Q_EMIT refreshListModel(base);
 
       delete currentModelIndex;
   }
   qDebug()<<"Error";
}
 
 




Название: Re: Указатели
Отправлено: mutineer от Сентябрь 16, 2013, 12:52
Код:
currentModelIndex = new QModelIndex;
currentModelIndex = &index;
Ну как минимум тут память течет.


Кроме того index разрушается при выходе из clickedTreeView, поэтому сохранять его адрес не стоит


Название: Re: Указатели
Отправлено: demaker от Сентябрь 16, 2013, 13:07
Понятно Спсб