У меня есть простая программа 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. Есть какие-нибудь подсказки относительно того, как зарегистрировать этот тип в системе метаобъектов?