void Task::runCloseAllVolumeTask() { m_table->setEnabled( false ) ; sleep( 1 ) ; // for ui effect int volumeCount = m_table->rowCount() ; if( volumeCount > 0 ){ QVector< QTableWidgetItem * > tableItems( volumeCount ) ; QTableWidgetItem ** it = tableItems.data() ; for( int i = 0 ; i < volumeCount ; i++ ){ *( it + i ) = m_table->item( i,0 ) ; } for( QTableWidgetItem * it : tableItems ){ QString device = it->text().replace( "\"","\"\"\"" ) ; auto r = utility::Task( QString( "%1 -q -d \"%2\"" ).arg( ZULUCRYPTzuluCrypt ).arg( device ) ) ; emit taskResult( it,r.exitCode() ) ; sleep( 1 ) ; // for ui effect } } m_table->setEnabled( true ) ; }
/** * @brief threading::readyRead Действие по готовности чтения из сокета */ void threading::readyRead() { // Считываем данные из сокета QString buf = static_cast<QString>(socket->readAll()); // Считываем данные в буфер до тех пор пока не будет достигнут конец строки if (buf.at(buf.size() - 1) == '\n') { //qDebug() << buf << buf.toInt(); // reserved for debug // создаём задачу, которой передаём результат ввода в клиенте taskeng *myTask = new taskeng(buf.toInt()); myTask->setAutoDelete(true); // устанавливаем соответствие между сигналом/слотом, атомарно (queued conn) connect(myTask, SIGNAL(result(QString)), this, SLOT(taskResult(QString)), Qt::QueuedConnection); // qDebug() << "Starting new task using a thread from QThreadPool"; // reserved for debug QThreadPool::globalInstance()->start(myTask); // returns global QThreadPool instance globalBuf = ""; } else { globalBuf.append(buf); } }