Ошибка сегментации при доступе к тексту QLabel

У меня проблема с QLabel. У меня есть QtWidget с QLabel внутри. Теперь я хочу изменить текст метки следующим кодом:

QLabel* safetyLabel = this->findChild<QLabel *>("safety_bits");

safetyLabel->setText(QString("test"));
printf("%i", (safetyLabel->text()).length());

но я всегда получаю «ошибку сегментации». Я думаю, что это что-то довольно простое, но я просто не вижу этого...

Есть идеи?


person Da Mks    schedule 16.02.2013    source источник
comment
Вы проверили, является ли safetyLabel nullptr? findChild вернет единицу, если не удалось найти биты безопасности.   -  person cmannett85    schedule 16.02.2013
comment
лол, ты прав, это nullptr, похоже, я что-то напутал. Спасибо!   -  person Da Mks    schedule 16.02.2013


Ответы (2)


Ваш safetyLabel может быть NULL, если вы используете конструктор QtCreators для создания пользовательского интерфейса и выполнения кода перед вызовом ui->setupUi(this); в конструкторе MainWindows.

person tro    schedule 16.02.2013
comment
Или он может быть нулевым по целому ряду других причин. Обязательно проверьте, что указатель не нулевой, перед разыменованием! - person jmk; 17.02.2013

Вот код.

QLabel *safetyLabel = NULL;
safetyLabel = (QLabel *) this->findChild("safety_bits");
if(!safetyLabel)
{
    qDebug() << "Failed to find safety_bits label!";
    return 1;
}
safetyLabel->setText(QString("safety_bits is here"));
person J.Javan    schedule 28.01.2015