Saber si se puede o no trabajar con QtCreator y duda con el USB

Mira
Si lo quieres hacer "a pelo" este codigo de una aplicacion mia te valdra (si no me he equivocado al editarlo) solo tienes que cargarlo al arduino, conectar el serial monitor y mandarle datos, amplialo a tu gusto.
Si te das cuenta, solo emplea el arduino como un mero receptor de ordenes y en funcion de estas pone en alto una salida o la apaga (por ejemplo enciende el motor de tu aplicacion) y de paso devuelve informacion de como estan las entradas.

/*
 * Control desde PC de una salida del arduino y lectura de dos entradas
 * Enviando el numero 3 para encender una salida
 * Enviando el numero 6 para apagar esa salida
 * Enviando el numero 9 devuelve la informacion de las 2 entradas en una trama
 * La trama consta de la letra A para indicar comienzo, los dos bits de las entradas y la Z para indicar final "A00Z"
 */

int salida1 = 13;           // Define una salida en el pin 13
int entrada1 = 4;           // Define una entrada en el pin 4
int entrada1 = 5;           // Define una entrada en el pin 5

void setup()                // se ejecuta cuando se inicia
{
  Serial.begin(9600);       // inicializa puerto serie (usb)
  pinMode(salida,  OUTPUT); // Define el pin 13 del arduino como salida
  pinMode(entrada1, INPUT;  // Define el pin 4 del arduino como entrada
  pinMode(entrada2, INPUT); // Define el pin 5 del arduino como entrada
  Serial.flush();
}

void loop()                           // Se ejecuta todo el rato
{
 variable1 = digitalRead(entrada1);   // lee la entrada1 y la asigna a una variable
 variable2 = digitalRead(entrada2);   // lee la entrada2 y la asigna a una variable
 int val;                             // variable que viene del pc

 if (Serial.available())                       // Comprueba si hay dato en el puerto serie
   {
   val = Serial.read();                        // carga el valor de lo que le envia el PC a la variable var
   if (val == '3') digitalWrite(salida, HIGH); // Pone en alto (+5Vcc) el pin de salida si el dado del PC es 3
   if (val == '6') digitalWrite(salida, LOW);  // Pone en bajo (0Vcc) el pin de salida  si el dado del PC es 6
   if (val == '9') parametros();               // Llama a la funcion parametros
   }
}


void parametros()    // Esta funcion envia de vuelta al PC una trama que empieza con A mas dos bits(entradas) y termina con Z
  {
   Serial.print("A");
   if (variable1 == HIGH) uno(); else cero();   // Si la entrada1 esta en alto, envia despues de la A el bit 1 sino 0
   if (variable2 == HIGH) uno(); else cero();   // Si la entrada2 esta en alto, envia despues del bit anterior el bit 1 sino 0
   Serial.println("Z");                        // Termina de enviar la trama con una z ejemplo: "A11Z"
   delay(300);
   Serial.flush();
  }

void uno() {Serial.print("1");}    // Esta funcion envia un 1 por el puerto serie

void cero(){Serial.print("0");}    // Esta funcion envia un 0 por el puerto serie