Название: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: bronstein87 от Май 16, 2017, 14:23 Здравствуйте. Мне необходимо собрать Qt с отключенным QT_NO_EXCEPTION, чтобы исключения генерировались в классах Qt. Подскажите, как осуществить пересборку?
ОС: Win7, компилятор mingw-32 Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: qate от Май 16, 2017, 15:32 а что этим будет достигнуто ?
Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: bronstein87 от Май 16, 2017, 15:47 а что этим будет достигнуто ? Код: 767 #ifdef QT_NO_EXCEPTIONS Q_CHECK_PTR будет пробрасывать bad_alloc, а не вызывать версию с qt_check_pointer, которая вызывает qFatal() и абортит программу. В общем, внутри классов Qt где реализована возможность проброса исключения - это будет сделано. Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: qate от Май 16, 2017, 16:19 и часто именно qt классы абортят программу ?
у меня обычно этот делает мой код ) всеже не пойму выгоды исключений тут, рабочие примеры есть ? Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: bronstein87 от Май 16, 2017, 16:39 и часто именно qt классы абортят программу ? Моя программа строит большое количество графиков (QChart) по большим объемам данных.у меня обычно этот делает мой код ) всеже не пойму выгоды исключений тут, рабочие примеры есть ? При передаче chart-а на ChartView с помощью setChart() происходят аллокации векторов в больших объемах (краем глаза глядет исходники, в суть не вникал), в случае нехватки памяти программа абортится, что никак меня не устраивает. Я хочу реализовать поведение через исключения, заключающееся в том, что при нехватке памяти Q_CHECK_PTR бросит bad_alloc, а в catch() я просто очищу часть памяти, что позволит программе продолжить работу а уже построенным графикам жить, а не завершится через abort(). Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: kuzulis от Май 16, 2017, 16:58 Цитировать Моя программа строит большое количество графиков (QChart) по большим объемам данных. Используйте Qwt вместо этого тормознутого QChart и будет все хорошо. Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: bronstein87 от Май 16, 2017, 17:18 Цитировать Моя программа строит большое количество графиков (QChart) по большим объемам данных. Используйте Qwt вместо этого тормознутого QChart и будет все хорошо. Возможно, вы правы. Но уже очень много написано с использованием QChart, так что сейчас это не вариант. Вы можете подсказать что-нибудь по вопросу в названии темы? И еще вопрос, в чем по-вашему заключается его тормознутость ? Сейчас сижу на версии 5.9, вроде работает вполне прилично. Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: kuzulis от Май 16, 2017, 18:25 Цитировать Вы можете подсказать что-нибудь по вопросу в названии темы? Нет, ничего нового не скажу. Цитировать И еще вопрос, в чем по-вашему заключается его тормознутость ? А сравните-ка потребление памяти, потребление CPU при отрисовке, да и вообще, анимации. Из личного опыта - если нужно использовать прокрутку, зум, и что-то наподобие графиков реального времени (когда новые данные отображаются по мере их поступления и шкала времени сдвигается), то QtCharts ооочень сильно проседает и вообще ведет себя неадекватно (например, рисует всякую ересь или вообще перестает отрисовывать данные в надлежащем виде). Например, их пример "осциллограф" работает... Но, стоит немного модифицировать его так, чтобы шкала времени-X менялась, то появляются проблемы. Также, в QtCharts нет возможности выбрать интересующий интервал с данными по их значениям (например, хотим посмотреть данные с 10-й по 11-ю секунды), там есть только что-то наподобие скроллинга, где выбирается "на сколько пикселей" прокрутить влево, вправо, вверх или вниз.. бррр.. Я недавно с дуру тоже было взял QtCharts (дай, думаю попробую, вроде-ж он был коммерческий, значит проверенный и шустрый, думал я). и тут хрясь -такой облом... жрет памяти немерено, жрет CPU (~20-30% чтобы перерисовать 200 точечек каждые ~50 мсек). И при том, имеется утечка памяти, при которой, оно выедает всю RAM со временем. Ай яй яй, думаю, что-же я наделал!!! :) А проект то вот вот уже надо здавать!!! В итоге плюнул и переписал все на Qwt, все шустро, загрузка ~1-2%, жрет ~5Mb и доволен как слон (жаль что нет биндингов для QML).. PS: Вот такая история.. лично я бы не советовал QtCharts, по крайней мере для отображения большого кол-ва динамических данных.. оно совершенно не подходит для этого, ИМХО (какашка в красивой обертке). PS: Так что не факт, что с устранением QT_NO_EXCEPTIONS будет лучше... это все борьба со следствием проблемы, а не с ее причиной. ;) Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: qate от Май 16, 2017, 18:41 в случае нехватки памяти программа абортится, что никак меня не устраивает. а что делать если памяти нет, просить пользователя сбегать в магазин ? ) или ждать пока освободится ? свопа тоже нет ? Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: bronstein87 от Май 17, 2017, 19:47 в случае нехватки памяти программа абортится, что никак меня не устраивает. а что делать если памяти нет, просить пользователя сбегать в магазин ? ) или ждать пока освободится ? свопа тоже нет ? Название: Re: пересобрать QT с конфигурацией -UQT_NO_EXCEPTIONS Отправлено: qate от Май 18, 2017, 08:53 Если памяти нет, пусть строит графики по меньшим интервалам. это если программа на это расчитана я вообще не знаю как корректно отрабатывать нехватку памяти это может случиться в любом месте, все не предусмотреть, пока считаю лучше упасть с коркой |