, но проблема в том, что я не могу достичь ana-> ui-> horizontalLayout_4-> addWidget (label);
blockquote>Поместите изменения своего пользовательского интерфейса в слот в вашем в главном окне и подключить сигнал потока к этому слоту, скорее всего, он будет работать. Я думаю, что только основной поток имеет доступ к пользовательскому интерфейсу в Qt. Таким образом, если вы хотите использовать графический интерфейс, он должен быть там и может быть передан только из других потоков.
ОК, вот простой пример. Кстати, ваш сценарий действительно не требует расширения
QThread
- так что вам лучше не делать этого, если только вам это не нужно. Поэтому в этом примере я буду использовать обычныйQThread
с рабочим на основеQObject
, но концепция будет такой же, если вы подклассыQThread
:Основной пользовательский интерфейс:
class MainUI : public QWidget { Q_OBJECT public: explicit MainUI(QWidget *parent = 0): QWidget(parent) { layout = new QHBoxLayout(this); setLayout(layout); QThread *thread = new QThread(this); GUIUpdater *updater = new GUIUpdater(); updater->moveToThread(thread); connect(updater, SIGNAL(requestNewLabel(QString)), this, SLOT(createLabel(QString))); connect(thread, SIGNAL(destroyed()), updater, SLOT(deleteLater())); updater->newLabel("h:/test.png"); } public slots: void createLabel(const QString &imgSource) { QPixmap i1(imgSource); QLabel *label = new QLabel(this); label->setPixmap(i1); layout->addWidget(label); } private: QHBoxLayout *layout; };
... и рабочий объект:
class GUIUpdater : public QObject { Q_OBJECT public: explicit GUIUpdater(QObject *parent = 0) : QObject(parent) {} void newLabel(const QString &image) { emit requestNewLabel(image); } signals: void requestNewLabel(const QString &); };
Рабочий объект создается и перемещается в другой поток, затем подключается к слоту, который создает метки, а затем его
newLabel
, который является всего лишь оберткой для испускания сигналаrequestNewLabel
и прохождения пути к изображению. Затем сигнал передается от рабочего объекта / потока к основному слоту пользовательского интерфейса вместе с параметром пути изображения, а новая метка добавляется в макет.Поскольку рабочий объект создается без родителя, чтобы вы можете переместить его в другой поток, мы также подключим поток уничтоженного сигнала к рабочему слоту
deleteLater()
.
Сообщение по теме Kafka сериализуется с другой версией схемы, чем та, что у вас есть в Реестре схем. Возможно, это было сгенерировано инструментом, который записал схему в другой реестр схем или в другую среду? Чтобы иметь возможность десериализовать его, Kafka Connect должен иметь возможность получить идентификатор схемы, который находится в магическом байте в начале сообщения Kafka по теме.
Схема отсутствует в вашем реестре схем, как это видно из:
GET /schemas/ids/803
{ "error_code": 40403, "message": "Schema not found" }
Вы можете проверить идентификатор схемы, которую вы делаете , посмотрев на
curl -s "http://localhost:8081/subjects/MY_TOPIC-value/versions/3/"|jq '.id'