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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Указатели  (Прочитано 2086 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« : Сентябрь 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";
}
 
 


Записан
mutineer
Гость
« Ответ #1 : Сентябрь 16, 2013, 12:52 »

Код:
currentModelIndex = new QModelIndex;
currentModelIndex = &index;
Ну как минимум тут память течет.


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

Сообщений: 960


Просмотр профиля
« Ответ #2 : Сентябрь 16, 2013, 13:07 »

Понятно Спсб
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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