2013-12-18 9 views
0

В течение нескольких дней, возможно недель, я искал утечку памяти в своем приложении. Я didn't найти, где это может быть, пока я не нашел это:QProgressBar делает приложение потребляющим много памяти

https://bugs.kde.org/show_bug.cgi?id=292217

После проверки все, я обнаружил, что QProgressBar занимает слишком много памяти каждый раз, когда Qt визуализирует состояние индикатора выполнения. В моем случае я также менял размер индикатора выполнения, поэтому он заставляет запоминать все больше и больше читателей.

Это может занять около 20 МБ в день, и поскольку мое приложение представляет собой приложение 24/7, с этим невозможно жить.

Мое решение состояло в том, чтобы сохранить индикатор выполнения всегда одного и того же размера, но мой клиент хочет, чтобы размер QProgressBar менял размер.

Кто-нибудь знает, как сохранить это использование памяти в определенных пределах?

Cheers.

система:

Win 7 Aero Qt 5.0.2 Visual Studio 2010 подталкивания 1,52 Нет MFC, ATL Нет

+0

Для чего это необходимо, связанная с этим ошибка относится к стилю Oxygen Qt и не обязательно существует в других (то есть в Windows родных) стилях. – CmdrMoozy

+0

Я знаю, что эта ошибка, возможно, не в Windows, так как это ошибка в KDE. Но этот пост заставил меня открыть это. – user3116857

ответ

1

Некоторые возможные обходные пути:

1) Обновление до новой версии из Qt, в котором эта ошибка фиксирована (если она существует)

2) Используйте другой QStyle, который не содержит эту ошибку (как предложено CmdrMoozy)

3) Скомпилируйте Qt из источника и исправьте Qt-источник, чтобы исправить эту ошибку; распределите свою исправленную версию Qt

4) Напишите свой собственный класс показателей выполнения (т. е. подкласс QWidget и переопределите paintEvent()) и используйте это вместо QProgressBar.