मैं अपने ग्राफिक्स इंजन को फ्रीग्लूट से क्यूटी तक ले जा रहा हूं। मेरी खिड़की वर्ग QWindow से विरासत में मिलता है। मुझे विंडो के केंद्र में सापेक्ष माउस स्थिति सेट करने और कर्सर को छिपाने में समस्या है। फ्रीग्लूट में कोड इस तरह दिखता है:
glutWarpPointer((glutGet(GLUT_WINDOW_WIDTH) / 2), (glutGet(GLUT_WINDOW_HEIGHT) / 2));
glutSetCursor(GLUT_CURSOR_NONE);
मैं ऐसा कुछ करने की कोशिश कर रहा था:
this->cursor().setPos((width() / 2), (height() / 2)); // this seems to set an absolute (global) position
this->cursor().setShape(Qt::BlankCursor); // doesn"t work
इसे कैसे प्राप्त करें?
उत्तर:
उत्तर № 1 के लिए 10आपके कोड का कोई प्रभाव नहीं है, क्योंकि आप एक अस्थायी प्रतिलिपि संपादित कर रहे हैं।
हस्ताक्षर को देखो: QCursor QWidget::cursor() const
। कर्सर ऑब्जेक्ट मूल्य से वापस कर दिया जाता है। कर्सर परिवर्तनों को लागू करने के लिए, आपको संशोधित ऑब्जेक्ट को वापस पास करना होगा setCursor()
। स्थानीय से वैश्विक समन्वय में मानचित्र करने के लिए, उपयोग करें mapToGlobal()
:
QCursor c = cursor();
c.setPos(mapToGlobal(QPoint(width() / 2, height() / 2)));
c.setShape(Qt::BlankCursor);
setCursor(c);