मुझे आश्चर्य है कि कौन से मामले विजेट को अपने पेंट इवेंट प्राप्त करते हैं, और यह ओएस के साथ कैसे भिन्न होता है। paintEvent के लिएएक क्यूटी विजेट कब एक पेंटएवेंट मिलता है?
क्यूटी प्रलेखन कहते हैं केवल
एक पेंट घटना सभी या एक विजेट का हिस्सा फिर से रंगना एक अनुरोध है। यह निम्न कारणों में से एक हो सकता है:
रीपेंट() या अद्यतन() लागू किया गया था,
विजेट छिप गया था और अब पर्दाफ़ाश हो गया है, या
कई अन्य कारणों से।
अब तक, मैं कुछ निशान paintEvent में डाल दिया है,
void Widget::paintEvent(QPaintEvent *e)
{
static int count = 0;
qDebug("paintEvent, %d", count++);
}
और यह है कि क्या मैं (विंडोज 7 कम से कम पर) को पता चला है:
paintEvent है जब विजेट खो देता है/लाभ प्राप्त करता है कहा जाता है। पेंट इवेंट को नहीं कहा जाता है जब कोई अन्य विजेट हमारे विजेट पर गुज़रता है। मुझे नहीं पता कि यह विंडोज 7 कंपोजिटिंग के कारण है या नहीं। पेंटएवेंट को तब भी कहा जाता है जब एक न्यूनतम विंडो बहाल की जाती है। आकार बदलने पर पेंटएवेंट को बुलाया जाता है।
तो ओएस पर निर्भर व्यवहार क्या है?
यह भी ध्यान दें कि जब भी हम किसी अन्य QWidget ऑनटॉप के बारे में बात कर रहे हैं, तो गायब हो जाता है/गायब/चाल/आकार बदल जाता है। कम से कम यह डिफ़ॉल्ट व्यवहार है। ऐसे मामले में, पेंटएवेंट को QPaintEvent के पैरामीटर के रूप में एक विशिष्ट क्षेत्र (QRegion) के साथ बुलाया जाता है, जो क्षेत्र को अद्यतन करने का वर्णन करता है। जानकारी के इस टुकड़े का उपयोग करके कोई भी आपकी सामग्री को पुनर्निर्मित करने के लिए आवश्यक चरणों को अनुकूलित कर सकता है, लेकिन मुझे लगता है कि इसका शायद ही कभी उपयोग किया जाता है। – leemes