crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Глупый вопрос по QConcurentRun
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
silver47 Дата 28.4.2011, 9:04
 
Цитата(wiz29 @ 28.4.2011, 10:50) *
поставив sleep на несколько секунд.


как sleep ставиться не знаю сделал так:
qDebug() << "Started: " << QTime::currentTime().toString("mm:ss:zzz");
QTime timer;
timer.start();
for(; timer.elapsed() < 10000;){
    //
}


UI не тормозит.
В, общем все красиво, именно так как нужно, сделал сигнал, по завершению кеширования прячется прогрессбар и выполняются нужные мне методы.
wiz29 Дата 28.4.2011, 8:54
 
Цитата(Litkevich Yuriy @ 27.4.2011, 19:24) *
это работает?

а с какой радости, извините, это не должно работать?

Цитата(silver47 @ 27.4.2011, 19:28) *
Ну по крайней мере выполняется. Пока операция занимает порядка 100 миллисекунд....


Проверить можно элементарно, поставив sleep на несколько секунд.

http://doc.trolltech.com/latest/qtconcurrentrun.html читаем раздел Using Member Functions
silver47 Дата 27.4.2011, 18:28
 
Цитата(Litkevich Yuriy @ 27.4.2011, 20:24) *
это работает?

Ну по крайней мере выполняется. Пока операция занимает порядка 100 миллисекунд, поэтому сказать точно, выполняется ли это отдельно от потока я не знаю... по отладочным сообщениям вроде как другой поток. Но все равно в планах кеширование вынести в отдельный класс, унаследованный от QThread
Litkevich Yuriy Дата 27.4.2011, 18:24
 
Цитата(silver47 @ 26.4.2011, 13:35) *
Возможен ли вызов метода класса таким образом? Если нет, то что можно вызвать?
нет, нельзя. просто функцию.
Опиши её в cpp-файле и пометь её как static.

Цитата(wiz29 @ 26.4.2011, 14:25) *
QtConcurrent::run(this, &MainWindow::createCache);
это работает?
wiz29 Дата 26.4.2011, 11:25
 
void MainWindow::updateUI(){
    if(socket){
        if (socket->isOpen() && socket->isEncrypted() && mainDB.isOpen()){ // Соединение с сервером установлено            
            // отсюда нужно вызвать this->createCache();
                       QtConcurrent::run(this, &MainWindow::createCache);

        }
    } 
}

void MainWindow::createCache(){
    // some work
}

silver47 Дата 26.4.2011, 11:10
  Да
wiz29 Дата 26.4.2011, 11:09
  писать наследника от потока, обычно приходится лишь в крайних случаях, когда нужно специальная функциональность с отдельной петлей обработки событий.

void MainWindow::createCache(){
// some work
}

это нужно вызвать?
silver47 Дата 26.4.2011, 11:08
 
void MainWindow::updateUI(){
    if(socket){
        if (socket->isOpen() && socket->isEncrypted() && mainDB.isOpen()){ // Соединение с сервером установлено            
            // отсюда нужно вызвать this->createCache();
        }
    } 
}

void MainWindow::createCache(){
    // some work
}
wiz29 Дата 26.4.2011, 11:06
 
Цитата(silver47 @ 26.4.2011, 12:03) *
Нет. не могу вызвать это непосредственно из класса.
Спасибо. Пойду в поток заворачивать.

покажи кусок кода в котором нужно вызвать.
silver47 Дата 26.4.2011, 11:03
  Нет. не могу вызвать это непосредственно из класса.
Спасибо. Пойду в поток заворачивать.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 13.7.2025, 14:10