Size: a a a

2020 February 18

BB

Bohdan Bessonov in Qt
Версия опенссл может не совпадать с той, под которую кутэ
источник

D

Dmitriy in Qt
это смотрел, где-то на просторах StackOwerFlow писали про это, нужную тоже скачивал
источник

RG

Renat Garaev in Qt
Dmitriy
помогите, пожалуйста разобраться с либами OpenSSL...
да и, видимо, в целом с тем, что хочу сделать...
есть QNetworkAccessManager из примера в документации и он не хочет отвечать на простой https запрос (для телеграмма)
так телеграмм же заблокирован (их сервер с апи), его надо через прокси тогда открывать.  а другой любой запрос https идет (на другой любой сайт)?
источник

D

Dmitriy in Qt
Renat Garaev
так телеграмм же заблокирован (их сервер с апи), его надо через прокси тогда открывать.  а другой любой запрос https идет (на другой любой сайт)?
прокси использую
http вроде идёт, https нет
источник

RG

Renat Garaev in Qt
Dmitriy
прокси использую
http вроде идёт, https нет
ну совет же дали. нужная версия под нужный qt библиотек нужна ssl. + в pro файл тоже добавить,  если из qtcreator используешь
источник

D

Driglu4it in Qt
Помогите с вопросом по QtCreator: использую его штатную возможность запускать инструменты тестирования. В моем случае - plasmoidviewer. Все отлично запускается, но в консоль QtCreator не пишет ничего после запуска команды (пробовал в настройках выбирать и исходную среду. Нет вывода в местную консоль.
источник

D

Dmitriy in Qt
Renat Garaev
ну совет же дали. нужная версия под нужный qt библиотек нужна ssl. + в pro файл тоже добавить,  если из qtcreator используешь
это делал, но проверю ещё раз, пока нет доступа к компу
источник

BB

Bohdan Bessonov in Qt
Dmitriy
это делал, но проверю ещё раз, пока нет доступа к компу
Вот так можно быстро проверить версию и доступен ли ссл
qDebug() << QSslSocket::supportsSsl() << QSslSocket::sslLibraryBuildVersionString() << QSslSocket::sslLibraryVersionString();
источник

D

Dmitriy in Qt
схоронил, проверю
источник

E

Eugene in Qt
Кто-нибудь, пожалуйста? :С весь день сижу с этим, инфы ноль
источник

SE

Suigintou45 E13 in Qt
родительский paintEvent можно не вызывать
источник

E

Eugene in Qt
Suigintou45 E13
родительский paintEvent можно не вызывать
Почему? И почему я всё-таки коробок не вижу?
источник

I

Ilya F. <IF> in Qt
Вечер добрый, нужен пример разработки qt cpp qml , когда интерфейсы разрабатывает отдельный дизайнер и передает программерам для наполнения логикой. Буду благодарен за ссылки на книги , видео или git. Репозитории.
источник

СС

Сергей Савкин in Qt
Eugene
Почему? И почему я всё-таки коробок не вижу?
Ты сделал поп в цикле и boxes пустой. Рисовать нечего.
источник
2020 February 19

O

Ofee in Qt
Ofee
Столкнулся с тем, что у меня this, переданный в лямбду, становится невалиден. Вызов переданной лямбды делается таким образом:
template<typename... Args>
void call_impl(Args&&... args) const
{
 QMetaObject::invokeMethod(
   context,  
   [this, args = std::tuple(std::forward<Args>(args)...)]() mutable {
     std::apply(callback, std::move(args));
   },
   Qt::ConnectionType::QueuedConnection);
}
context
в данном случае — это QAbstractEventDispatcher*, я его получаю через QAbstractEventDispatcher::instance(); однократно при создании моего объекта.
Замена тела на std::apply(callback, std::tuple(std::forward<Args>(args)...));  исправляет падение, но я не очень понимаю, в какую сторону дальше копать в поисках причины.

Возможно, вы дадите мне направление или, может, даже у кого-то хватит экстрасенсорных способностей, чтобы сразу найти у меня ошибку...
Если нужно будет, полный код моего класса выложу, а вот с минимально-воспроизводимым примером труднее — баг стабильно воспроизводится в моём приложении, однако как его повторить в упрощённом — не знаю.

Ну, и важное уточнение: воспроизводится и при работе в одном потоке, и в нескольких
Полагаю, с багом я разобрался, далеко ходить не пришлось — помог memcheck. Пока разобрался в истинной причине, пофиксил несколько попутных багов.

Лямбда и идеальная передача были написаны правильно независимо от того, был там std::move или std::forward. Форвард аргументов шёл так или иначе до конструктора std::tuple, где выполнял всё нужное от него. Дальше сам std::tuple внутри захвата лямбды уже стал rvalue, где, его можно было мувать без проблем, это уже не оригинальные аргументы, пришедшие внутрь функции, с ними мы можем делать что хотим и мув — единственный разумный вариант.

А вот реальная проблема — захват this внутри лямбды... Это моя самая нелепая ошибка, пожалуй, я не учёл "одноразовость" класса, его деструктор выполяется зачастую до реального вызова функтора в очереди событий, унося с собой последний указатель на функтор, а дальше всё становится очень плохо...

@anatolijs, @b2soft, @Malbu0698, большое спасибо за подсказки и наводки :)
источник

E

Eugene in Qt
Сергей Савкин
Ты сделал поп в цикле и boxes пустой. Рисовать нечего.
Нечего, пока не придут новые данные. Они поступают из другого треда, писал об этом выше
источник

O

Ofee in Qt
Ofee
Полагаю, с багом я разобрался, далеко ходить не пришлось — помог memcheck. Пока разобрался в истинной причине, пофиксил несколько попутных багов.

Лямбда и идеальная передача были написаны правильно независимо от того, был там std::move или std::forward. Форвард аргументов шёл так или иначе до конструктора std::tuple, где выполнял всё нужное от него. Дальше сам std::tuple внутри захвата лямбды уже стал rvalue, где, его можно было мувать без проблем, это уже не оригинальные аргументы, пришедшие внутрь функции, с ними мы можем делать что хотим и мув — единственный разумный вариант.

А вот реальная проблема — захват this внутри лямбды... Это моя самая нелепая ошибка, пожалуй, я не учёл "одноразовость" класса, его деструктор выполяется зачастую до реального вызова функтора в очереди событий, унося с собой последний указатель на функтор, а дальше всё становится очень плохо...

@anatolijs, @b2soft, @Malbu0698, большое спасибо за подсказки и наводки :)
С самого начала ожидал висячую ссылку в лямбде, чуть не начал перепроверять всю кодовую базу, а реальный виновник был всегда открыт в соседней вкладке среды...
источник

СС

Сергей Савкин in Qt
Eugene
Нечего, пока не придут новые данные. Они поступают из другого треда, писал об этом выше
Лень искать. Но просто ради интереса убери sleep из paintEventa (просто потому что это как то странно) и не делай pop в нем, соответственно и while замени на ranged for. Повторюсь, просто ради теста.
источник

E

Eugene in Qt
Сергей Савкин
Лень искать. Но просто ради интереса убери sleep из paintEventa (просто потому что это как то странно) и не делай pop в нем, соответственно и while замени на ranged for. Повторюсь, просто ради теста.
Окей, днём сделаю
источник

M

Mr.Mait in Qt
Попробуй так
QPainter pntr(this);
pntr.save();
// ...
// ...
// и в конце метода
pntr.restore();

А вообще у меня никак не получилось рисовать. Пришлось использовать openCV, захватывал изображение QImage и переопределил QLabel paintEvent.
источник