Tôi đang cố chạy một phương thức trên luồng GUI bằng QMetaObject :: invokeMethod, trả về true. Nhưng, nếu tôi sử dụng Qt :: QueuedConnection phương pháp của tôi không bao giờ được gọi (ngay cả khi invokeMethod trả về true).QMetaObject :: invokeMethod trả về true, nhưng phương thức không bao giờ được gọi là
Đây là những gì tôi đang sử dụng:
QMetaObject::invokeMethod(this, "draw_widgets", Qt::QueuedConnection)
tôi không nhận được bất kỳ thông báo lỗi hoặc bất cứ điều gì ... Nếu tôi sử dụng Qt :: AutoConnection hoặc Qt :: DirectConnection phương pháp này không được gọi , nhưng từ cùng một luồng của khóa học. Không phải từ thread GUI, đó là những gì tôi cần.
draw_widgets là một nơi công cộng loại void draw_widgets() và lớp của tôi kế thừa QObject và sử dụng macro Q_OBJECT.
Tôi sẽ đánh giá cao bất kỳ trợ giúp nào về vấn đề này hoặc cách kiểm tra lý do tại sao phương thức này không được gọi.
Cảm ơn.
Tôi có một tình huống tương tự : Tôi có một lớp kế thừa từ QObject và sử dụng 'Q_OBJECT'. Ví dụ của lớp này được tạo ra trong vòng lặp chính. Sau đó, trong khi thực hiện một phương thức của cùng một lớp trong vòng lặp chính, tôi gọi 'QMetaObject :: invokeMethod (this," hideListsSlot ", Qt :: QueuedConnection);', trong đó 'void hideListsSlot()' là một khe công cộng của lớp học. Các khe cắm không bao giờ được gọi. – Giorgio