Kак запустить запустить QTimer в QtConcurrent::run?
Я попробовал так, но пишет - не правильный вызов функции:
for (int i =0; i < test_checkbox.length(); i++ )
{
if (Value == true)
{
if(test_checkbox[i]->isChecked() ==Value)
{
// timer->start(struc_mess_add.MS); // так работает
QtConcurrent::run(timer->start(vector_struc_mess_add[i].MS),&timer); // запустит слот после окончания временного промежутка
// создаю поток с своим таймером
}
} else {
qDebug() << "chekbocks:" << " False";
timer->stop(); // обязательно надо завершить timer, ведет себя(timer) считай как поток !.
}
}
А вот слот на который он завязан:
connect(timer, SIGNAL(timeout()), this, SLOT(KAN_minimal())); // делаю соединение
В заголовочном файле:
QTimer *timer = new QTimer(); // !!! создаю таймер
Пытался через вектор попробывать. Но при этом не выдаёт ошибку.
timer = new QTimer(); // объявляем и инициализируем timer
vector_qtimer.append(timer); // кладём timer в вектор
vector_qtimer[i]->start(vector_struc_mess_add[i].MS);
В заголовочном файле:
QTimer *timer = new QTimer(); // !!! создаю таймер
QVector<QTimer*> vector_qtimer;
QtConcurrent::run(...) лишний, сигналы/слоты прекрасно отрабатывают без него. При динамическом создании таймеров и размещением их в вектор Вы забываете сигналы вновь созданного таймера соединить со слотом.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей