नहीं कहा जाता है। मैं QMetaObject :: invokeMethod का उपयोग करके GUI थ्रेड पर एक विधि चलाने की कोशिश कर रहा हूं, जो सत्य लौटाता है। लेकिन, अगर मैं Qt :: QueuedConnection का उपयोग करता हूं तो मेरी विधि कभी भी कॉल नहीं होती है (भले ही invokeMethod सत्य लौटाए)।QMetaObject :: invokeMethod सत्य लौटाता है, लेकिन विधि को कभी भी
QMetaObject::invokeMethod(this, "draw_widgets", Qt::QueuedConnection)
मैं अगर मैं क्यूटी :: AutoConnection या क्यूटी :: DirectConnection विधि का उपयोग किसी भी त्रुटि संदेश या कुछ भी नहीं मिलता है ... कहा जाता हो जाता है:
यह मैं क्या उपयोग कर रहा हूँ है , लेकिन पाठ्यक्रम के एक ही धागे से। जीयूआई थ्रेड से नहीं, जो मुझे चाहिए।
draw_widgets टाइप void draw_widgets() का सार्वजनिक स्लॉट है और मेरी कक्षा QObject को प्राप्त करती है और Q_OBJECT मैक्रो का भी उपयोग करती है।
मैं इस पर किसी भी मदद की सराहना करता हूं, या यह जांचने के लिए कि विधि को क्यों नहीं कहा जा रहा है।
धन्यवाद।
मैं एक ऐसी ही स्थिति है : मेरे पास एक कक्षा है जो QObject से विरासत में है और 'Q_OBJECT' का उपयोग करती है। इस वर्ग का उदाहरण मुख्य पाश में बनाया गया है। फिर, मुख्य लूप में एक ही कक्षा की विधि को निष्पादित करते समय, मैं 'QMetaObject :: invokeMethod (यह," hideListsSlot ", Qt :: QueuedConnection) को कॉल करता हूं; ', जहां' void hideListsSlot() 'का सार्वजनिक स्लॉट है कक्षा। स्लॉट कभी नहीं बुलाया जाता है। – Giorgio