QT Jambi: обновление пользовательского интерфейса из другого потока - PullRequest
0 голосов
/ 29 июня 2011

В настоящее время я работаю над проектом Java, использующим Qt Jambi для пользовательского интерфейса. Я делаю некоторые вычисления в потоке, отличном от потока пользовательского интерфейса, и я хотел бы обновить пользовательский интерфейс, чтобы показать прогресс.

Понятно, что обновления пользовательского интерфейса могут быть выполнены только в потоке пользовательского интерфейса, и поскольку вычислительный поток не является потоком пользовательского интерфейса, я не могу выполнять обновления пользовательского интерфейса оттуда (попытка, которая в результате приведет к ошибке QObject used from outside its own thread).

Итак, как я могу вызвать мой updateUI() метод в потоке пользовательского интерфейса?

Ответы [ 2 ]

6 голосов
/ 29 июня 2011

Я только что нашел решение сам. QApplication предоставляет метод invokeLater для выполнения операций в потоке пользовательского интерфейса:

QApplication.invokeLater(new Runnable() {
    @Override
    public void run() {
        updateUI();
    }
});
0 голосов
/ 29 июня 2011

Я уже давал похожий ответ, но не смог его найти.Поэтому я просто повторю то, что сказал ранее.

Вам необходимо использовать сигнал / слот механизм qt, чтобы установить связь между основным потоком с рабочим потоком.

Извлечь пример Мандельброта .

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

...