Работаю с COM-объектом через qaxobject.
COM-объект это OPOS драйвер для ККМ (просто для справки).
Вот так вызвываю метод:
printer->PrintRecItem(QString::fromUtf8("123 тест test"), ...);
Вот сам метод:
inline int IOPOSFiscalPrinter::PrintRecItem(const QString& Description, qlonglong Price, int Quantity, int VatInfo, qlonglong UnitPrice, const QString& UnitName)
{
int qax_result;
void *_a[] = {(void*)&qax_result, (void*)&Description, (void*)&Price, (void*)&Quantity, (void*)&VatInfo, (void*)&UnitPrice, (void*)&UnitName};
qt_metacall(QMetaObject::InvokeMetaMethod, 43, _a);
return qax_result;
}
В результате получается такая строка:
123 ?xe? test
Уже голову сломал, пытаясь определить, какую необходимо передать кодировку. По идее, драйвер поддерживает UTF-8, но, судя по результату, что-то где-то ломается.