Size: a a a

2021 January 13

A

Alexander in Qt
Подскажите: есть сущность, перемещённая в отдельный поток. У неё есть QTimer, живущий в том-же потоке и дёргающий слот сущности по таймауту. Всё с применением умных указателей, в деструкторах руками ничего не писал.
При закрытии программы, когда все объекты прибиваются и срабатывают все деструкторы, оно ругается, что таймер нельзя остановить из другого потока, а следом - что (видимо не прибитый таймер) полез в кучу по несуществующему адресу.
Все решения данной проблемы, какие нашёл - сводятся к ручной де-инициализации с ручной остановкой таймера через слот прежде, чем будет вызван деструктор объектов.
Можно ли как то этот зоопарк настроить, чтобы оно корректно умирало само?
источник

SE

Suigintou45 E14 in Qt
передать таймеру указатель на эту сущность в потоке в качестве parent?
источник

SE

Suigintou45 E14 in Qt
ну и при завершении послать сущности deleteLater и дождаться завершения потока
источник

A

Alexander in Qt
Спасибо, помогло. Правда там другое ругательство вылезло - теперь пишет, что ивент не может в другой поток послать.
источник

AU

Abu Umar in Qt
Alexander
Спасибо, помогло. Правда там другое ругательство вылезло - теперь пишет, что ивент не может в другой поток послать.
Что-то у вас не так. Таймер тикает в отдальном потоке, а остановить его можно только из того потока, в котором создали. Если вы ему указали верного родителя, и то при удалении родителя удалится и таймер, только родителем должен быть объект в том же потоке, что таймер.
источник

A

Alexander in Qt
документация говорит, что таймер и существовать может в разных потоках. Соединение сигнал-слот между потоками может ходить. Но в моём случае таймер был точно внутри потока, я сделал это спеициально.
источник

W

WhoAmI? in Qt
Друзья, помогите, пожалуйста...
Ниже жирным написал строку, из-за которой вылетает приложение
В первый TableWidget считывают данные из csv-файла (все работает правильно):
(см. слот по нажатию на 1-ю кнопку)
Во второй TableWidget хочу скопировать те строки и столбцы, которые выделены Чекбоксом.
(см. слот по нажатию на 2-ю кнопку)
QCheckBox *checkBox = qobject_cast<QCheckBox*>(item->layout()->itemAt(0)->widget());
https://pastebin.com/7ByCWPBV
Заранее спасибо!
источник

W

WhoAmI? in Qt
WhoAmI?
Друзья, помогите, пожалуйста...
Ниже жирным написал строку, из-за которой вылетает приложение
В первый TableWidget считывают данные из csv-файла (все работает правильно):
(см. слот по нажатию на 1-ю кнопку)
Во второй TableWidget хочу скопировать те строки и столбцы, которые выделены Чекбоксом.
(см. слот по нажатию на 2-ю кнопку)
QCheckBox *checkBox = qobject_cast<QCheckBox*>(item->layout()->itemAt(0)->widget());
https://pastebin.com/7ByCWPBV
Заранее спасибо!
источник

AS

Anatoly Shirokov in Qt
WhoAmI?
Друзья, помогите, пожалуйста...
Ниже жирным написал строку, из-за которой вылетает приложение
В первый TableWidget считывают данные из csv-файла (все работает правильно):
(см. слот по нажатию на 1-ю кнопку)
Во второй TableWidget хочу скопировать те строки и столбцы, которые выделены Чекбоксом.
(см. слот по нажатию на 2-ю кнопку)
QCheckBox *checkBox = qobject_cast<QCheckBox*>(item->layout()->itemAt(0)->widget());
https://pastebin.com/7ByCWPBV
Заранее спасибо!
источник

S

Sofia in Qt
Помогите разобраться с ошибкой: Unable to assign [undefined] to QString. Код
TextField { text: filedialog.fileUrls[0]
}


А если я пишу text: qsTr( filedialog.fileUrls[0] ) то ошибка такая Error: qsTr(): first argument (sourceText) must be a string
источник

S

Sofia in Qt
Как преобразовать тип?
источник

W

WhoAmI? in Qt
Что мне делать с этой информацией?
источник

m

mefest in Qt
Sofia
Помогите разобраться с ошибкой: Unable to assign [undefined] to QString. Код
TextField { text: filedialog.fileUrls[0]
}


А если я пишу text: qsTr( filedialog.fileUrls[0] ) то ошибка такая Error: qsTr(): first argument (sourceText) must be a string
выведи значение filedialog.fileUrls[0]
может он у тебя undefined?
источник

S

Sofia in Qt
до того как пользователь введет путь - он пустой
источник

AS

Anatoly Shirokov in Qt
WhoAmI?
Что мне делать с этой информацией?
прочитать, вызывать setLayout
источник

AT

Anatoly Tomilov in Qt
лучше удали, не сбивай человека с толку. Тебе самому нужна помощь
источник

m

mefest in Qt
Sofia
до того как пользователь введет путь - он пустой
"" != undefined
источник

A

Alexander in Qt
Anatoly Tomilov
лучше удали, не сбивай человека с толку. Тебе самому нужна помощь
да, там скорее всего через статичные методы кустринга надо, он имеет 100500 конверторов у себя внутри.
источник

AT

Anatoly Tomilov in Qt
Alexander
да, там скорее всего через статичные методы кустринга надо, он имеет 100500 конверторов у себя внутри.
надо сначала понять, что это не C++
источник

m

mefest in Qt
Sofia
до того как пользователь введет путь - он пустой
сложно так сказать, но мне кажется, что тебе надо делать присваивание после того как пользователь что то введет
источник