Событие QT LocalSocketError из потока asyn c - PullRequest
0 голосов
/ 26 мая 2020

У меня есть простая программа QT, которая подключается к сокету и отправляет / принимает основные c команды. Я пытаюсь запустить функцию QLocalSocket::connectToServer() в потоке QtConcurrent::run и получать сообщения об ошибках в основном потоке.

Моя проблема в том, что я получаю сообщение об ошибке:

QObject::connect: Cannot queue arguments of type 'QLocalSocket::LocalSocketError'
(Make sure 'QLocalSocket::LocalSocketError' is registered using qRegisterMetaType().)

Это имеет смысл согласно документам . Но я не могу правильно использовать Q_DECLARE_METATYPE() and qRegisterMetaType().

Сначала я подключаюсь к событию ошибки, например, в моем mainwindow.cpp классе:

connect(
    server->socket,
    QOverload<QLocalSocket::LocalSocketError>::of(&QLocalSocket::error),
    this,
    &MainWindow::socketError
);

Затем у меня есть попытался ввести main.cpp

Q_DECLARE_METATYPE(QLocalSocket::LocalSocketError);

, а затем в моем mainwindow.cpp классе:

qRegisterMetaType<QLocalSocket::LocalSocketError>();

Это все еще дает мне ошибку при компиляции The type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system.

Кажется, я не могу найти какой-либо хорошей информации о том, как использовать данный макрос и функцию для регистрации этого точного типа в QT. Есть какие-нибудь подсказки относительно того, как зарегистрировать этот тип в системе метаобъектов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...