2010-06-30 8 views
6

को हटाते समय प्रोग्राम क्रैश हो जाता है, मैंने मेनविंडो में WA_DeleteOnClose विजेट विशेषता सेट की है।एक Qt MainWindow पर WA_DeleteOnClose विशेषता को सेट करते समय, ui पॉइंटर

setAttribute(Qt::WA_DeleteOnClose); 

बहरहाल, जब भी मुझे लगता है कि मुख्य विंडो बंद करते हैं, मैं एक segfault इसके नाशक है, जो केवल है delete ui;

संक्षेप में में मिलता है, निर्माता में एक क्यूटी 4 जीयूआई आवेदन बनाया है, निर्माता को setAttribute(Qt::WA_DeleteOnClose); कहा, कार्यक्रम अब बाहर निकलने पर दुर्घटनाग्रस्त हो जाता है।

उत्तर

9

क्या आप पहली बार अपने विनाशक में सेगफॉल्ट प्राप्त कर रहे हैं, या दूसरी बार? याद रखें कि आपकी मुख्य विंडो विनाशक केवल एक बार चलनी चाहिए। यही कारण है कि यह है कि यह या तो एक स्टैक की वजह से, या WA_DeleteOnClose की वजह से, दोनों नहीं चलाना चाहिए कहने के लिए है।

IIRC, प्रजापति main() के ढेर पर मुख्य विंडो डाल देंगे। इसलिए, जब main() लौटाता है तो मुख्य विंडो नष्ट हो जाती है।

+4

यह पता चला है कि मैंने गलती से 'मुख्य()' में ढेर के बजाय स्टैक पर अपनी 'मेनविंडो' कक्षा घोषित की है। आपके जवाब ने मुझे ऐसा महसूस किया; धन्यवाद। :) –

संबंधित मुद्दे