Есть конструктор для класса, в который передается начальное время:
map_viewer::map_viewer(QTime *startTime)
{
_startTime = startTime;
_tm = new QLabel(_startTime->toString("hh:mm:ss"));
_layout = new QGridLayout();
_layout->addWidget(_tm, 3, 2);
}
где _startTime
- QTime*
, _tm
- QLabel*
и _layout
- QGridLayout*
. Все заданы в заголовочном. Вызывается конструктор вот так:
QTime startTime = datasource->get_start_time();
map_viewer(&startTime);
После выполнения конструктора _tm
имеет нормальный вид, отображает то, что нужно:
Но сразу после того, как программа выходит из конструктора, почему-то, переменная _startTime принимает invalid value. То есть, пытаюсь изменить значение _tm
в одном из слотов:
_tm->setText(_startTime->addMSecs(param.getTime()).toString("hh:mm:ss"));
и получаю:
Если попытаться вывести _startTime->msec()
где либо, кроме конструктора, получаю -1
, что значит, что _startTime
имеет недопустимое время. При этом, _startTime не изменяться совершенно нигде, исключительно задается в конструкторе и используется в слоте.
Совершенно не имею понятия, в чем ошибка.
QTime startTime = datasource->get_start_time();
map_viewer(&startTime);
В этом месте вы передаете указатель на временный объект. Когда область видимости переменной startTime
заканчивается - он автоматический разрушается.
Соответственно переменная _startTime
в классе map_viewer
содержит указатель на разрушенную память.
Копируйте время в конструктор по значению или по ссылке.
map_viewer::map_viewer(QTime startTime)
или лучше так
map_viewer::map_viewer(const QTime &startTime)
Но при этом к классе map_viewer тип переменной _startTime нужно изменить с QTime*
на QTime
Ну и конечно изменить вызов конструктора на такой:
QTime startTime = datasource->get_start_time();
map_viewer(startTime);
Или даже так:
map_viewer(datasource->get_start_time());
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как добавить в свой проект библиотеку libosmscout ? Я использую IDE Qt Creator, у меня операционная система WindowsПишу я на C++
Всем привет! Такой вопрос, есть сайт, написан на HTML, к нему написан Restful web service, использую веб сервер WildFly 11, и проблема заключается в том, что...
У меня в андроид приложении есть JSONObject мне нужно из этого обьекта взять все значения при этос я ключи не знаюМожно его перевести в обычный...