Проблема с сигналом слайдера Qt / GUI - PullRequest
0 голосов
/ 08 января 2010

Когда пользователь перемещает ползунок, он запускает сигнал, и на основании этого я хочу вызвать метод readData из dataClass, чтобы вернуть мне строку, а затем вывести ее в guiClass. Но это не работает. Я получаю сигнал, полученный программой: «EXC_BAD_ACCESS». Я использую Xcode . Как только я перемещаю ползунок, программа вылетает и выделяет строку 9.

 1  //---guiClass---
 2  guiClass::guiClass(QWidget *parent) : QWidget(parent)
 3  {
 4      connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(slider_Moved(int)));
 5  }
 6  void guiClass::slider_Moved(int val)
 7  {
 8      //Don't worry about val for now.
 9      cout << dataClassPtr->readData(val) << endl;
10  }

    //---dataClass---
    char* dataClass::readData(int lines) {
       char *str = "hello world";
       return str;
    }

Ответы [ 2 ]

2 голосов
/ 08 января 2010
  1. Используйте отладчик (если вы не знаете как, изучите: -)
  2. Убедитесь, что dataClassPtr указывает на действительный экземпляр dataClass
  3. char *str = "hello world" неверно (строковые литералы являются постоянными; должно быть const char* str)
  4. Почему бы readData не вернуть QString вместо этого?
0 голосов
/ 08 января 2010

Указатель str в dataClass :: readData размещается в стеке. Вы не можете использовать его, когда функция вернулась.

Попробуйте что-то вроде:

QString* dataClass::readData(int lines) 
{
    return new QString("hello world"); 
}

Не забудьте удалить QString, когда закончите с ним

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...