Ошибка QProgressBar - PullRequest
       2

Ошибка QProgressBar

0 голосов
/ 02 февраля 2010

Я пытаюсь добавить QProgressBar в мой код, но возникают некоторые проблемы.Я добавил индикатор выполнения через Designer и в коде передаю указатель на объект QprogressBar в отдельный поток, чтобы он обновлял QProgressBar при обработке данных, однако я получаю это сообщение:: 77: _XGetXCBBuffer: Ошибка подтверждения `((int) ((xcb_req) - (dpy-> request))> = 0) '.Я использую Qt-4.5.0 в Ubuntu 8.10 (2.6.27-11).Я также пробовал Qt-4.3.5 в RHEL5 (2.6.18), и я получаю другую ошибку, что-то загадочное, как ошибка X с ошибкой QPaint.Кажется, что все в порядке, когда я обновляю индикатор выполнения из основного цикла приложения.

Пожалуйста, помогите Нимешу

1 Ответ

3 голосов
/ 03 февраля 2010

Класс QWidget и все его подклассы, включая QProgressBar, не являются реентерабельными и не могут использоваться вне основного потока. Обратитесь к следующей документации:

http://doc.trolltech.com/4.5/threads.html#threads-and-qobjects

Вы получаете ошибки, потому что пытаетесь обновить QProgressBar извне основного потока.

Предпочтительный способ обновления индикатора выполнения состоит в том, чтобы объект, связанный с вашим потоком обработки данных, периодически генерировал сигнал по мере его продвижения, а затем подключал этот сигнал к слоту setValue(int) в QProgressBar. Qt гарантирует, что соединение через слот сигнала является поточно-ориентированным. Обратитесь к документации по подключению сигналов и слотов между потоками:

http://doc.trolltech.com/4.5/threads.html#signals-and-slots-across-threads

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...