Название: Потоки и функции Отправлено: Witcher от Август 01, 2011, 17:09 Имем
Код: #ifndef MAINWINDOW_H Код: void MainWindow::функция1(){ Как мне запустить данную функцию в отдельном потоке?? С потоками никогда не имел дело, обьясните на пальцах как это делать. Заранее премного благодврен! Название: Re: Потоки и функции Отправлено: LisandreL от Август 01, 2011, 18:37 Можно в целевом потоке вызвать слот присоединённый принудительно как Qt::DirectConnection.
Или банально вызвать функцию из того потока. Но учитывайте 2 момента: 1) Изменять gui из другого потока нельзя. 2) Читать тоже далеко не всегда безопасно. Название: Re: Потоки и функции Отправлено: Igors от Август 01, 2011, 19:12 Как мне запустить данную функцию в отдельном потоке?? Простое объяснение "этого не надо делать". Потому что ф-ция (метод) MainWindow почти наверняка не будет "поткобезопасной" и систему завалит. Нужно тщательно продумать что запущенная нитка будет делать, какие данные ей передать и какие забрать (и как) - словом, проявить больше уважения к параллельному выполнению/программированию. С потоками никогда не имел дело, обьясните на пальцах как это делать. Название: Re: Потоки и функции Отправлено: Witcher от Август 01, 2011, 21:46 Ясно, это пичаль(
Просто у меня на форме допустим каждую секунду приходится отрисовывать область определенного размера, и вызывать обновление формы каждый раз сами понимаете не айс, хотел в поток(заодно и изучит), но видимо бредовая идея. Может посоветуете как тогда отрисовывать элементы в квадрате на форме размером например 20/40 каждую секунду не трогая paintEvent?? в билдере таких проблем у меня не было, но на то он и билдер.... Название: Re: Потоки и функции Отправлено: LisandreL от Август 01, 2011, 22:17 Просто у меня на форме допустим каждую секунду приходится отрисовывать область определенного размера, и вызывать обновление формы каждый раз сами понимаете не айс, хотел в поток(заодно и изучит), но видимо бредовая идея. Рендерим в потоке скажем в QPixmap, emit'им сигнал с этим QPixmap'ом как параметром. В гланом потоке к этому событию коннектим слот и в этом слоте выводим отредеренный участок (если область всегда одна и та же, то можно через QLabel::setPixmap.Название: Re: Потоки и функции Отправлено: Witcher от Август 01, 2011, 23:10 Сделал вывожу в Qlabel, но получается почему не понятно что, в текущем лабле отражаются буквы с других лабл, сам лабл цифрит очень ужастно
Название: Re: Потоки и функции Отправлено: LisandreL от Август 01, 2011, 23:29 «Talk is cheap. Show me the code.»
Название: Re: Потоки и функции Отправлено: Witcher от Август 01, 2011, 23:40 Все переделал, премного благодарен. Нагрузку на 50% сняло. буду с потоками мутить может что получится)
|