Таблица, с которой осуществляется обмен:

CREATE TABLE example (
	id INTEGER,
	bin_data BYTEA
);

Запись данных:

const char cart[] = {0x04, 0x43, 0x00, 0x9A};
QByteArray binDataArray(QByteArray::fromRawData(cart, 4));
QSqlQuery query1;
query1.prepare(QString("INSERT INTO example (id, bin_data) VALUES(:id, :bin_data)");
query1.bindValue(":id", 10, QSql::In);
query1.bindValue(":bin_data", binDataArray, QSql::In | QSql::Binary);
query1.exec();

QSqlQuery query2;
query2.exec(QString("INSERT INTO files VALUES(%1, %2);")
                   .arg(18)
                   .arg(db.driver()->formatValue(dataField)));

Чтение данных:

QSqlQuery query;
query.exec("SELECT id, bin_data FROM example LIMIT 1");
query.next();
QByteArray binDataArray = query.value(query.record().indexOf("bin_data")).toByteArray();