Problemas de seguridad de subprocesos Qt

        Recientemente hice un programa de actualización de interfaz interactiva. Utilice el hilo que recibe la instrucción para procesar la función de actualización de la interfaz y encontrará que se informará un error y la interfaz no se actualizará. Después de revisar Baidu, descubrí que se trataba de un problema de seguridad del hilo. Los subprocesos secundarios no pueden procesar el subproceso principal. Descubrí que hay muchas introducciones relacionadas: un método es usar la ranura de señal de conexión para manejarlo. Una forma es moveToThread para manejarlo. Solo completé el método de conexión, pero moveToThread no pasó la verificación. ¿Hay alguien que haya pasado la verificación? Por favor, dame algún consejo.

        A continuación se muestra la estructura de mi código.

        Uno es el modelo de interfaz, que contiene la función de inserción.
    beginInsertRows(QModelIndex(), index, index);
    m_dataList.insert(index, data);
    endInsertRows(); //Este es el motivo de la excepción

        Uno es el hilo de comunicación de instrucciones, que recibe instrucciones de la interfaz de usuario. Luego procéselo.

        mientras(estácorriendo())
        {

                cambiar(cmd)

                {

                        caso INSERTAR DATOS:

                                QDatos variantes (json);

                                emitir signalToUpdate(datos);

                        romper;

                }

        }

Utilice la función de conexión de ranura asociada.

conectar(esto,&CmdProcess::signalToUpdate,esto,&CmdProcess::startToUpdate);

void CmdProcess::startToUpdate(datos QVariant)

{

        QJsonObject msg = data.toJsonObject(); //El uso de QJsonObject requiere conversión de tipos.

        Agregar (mensaje);

}
Con respecto a por qué se necesitan subprocesos, la razón principal es evitar el bloqueo en la devolución de llamada directa, lo que provocará que la interfaz se congele.   

Supongo que te gusta

Origin blog.csdn.net/dreamliweiming/article/details/126786921
Recomendado
Clasificación