पर हटाएं मेरे पास एक प्रश्न है जिसमें आप में से कुछ के लिए स्पष्ट उत्तर है, लेकिन मैं इसे समझ नहीं सकता।QMessageBox बंद
QMessageBox http://qt-project.org/doc/qt-5/qmessagebox.html प्रदर्शित किया जा रहा के 2 तरीके हैं, या तो आप exec()
जो उपयोगकर्ता जब तक प्रोग्राम निष्पादन रोक संदेश बॉक्स बंद करें, या show()
जो सिर्फ बॉक्स (शायद अलग थ्रेड में या किसी तरह से जारी रखने के लिए कार्यक्रम की अनुमति देता है कि में प्रदर्शित करना जबकि बॉक्स उपयोगकर्ता के लिए इंतजार कर रहा है)।
मैं शो() का उपयोग करने के बाद बॉक्स को कैसे हटा सकता हूं?
इस कोड को तुरंत इसे बंद, संदेश बॉक्स nanosecond के लिए प्रकट होता है और उसके बाद यह चला गया:
QMessageBox *mb = new QMessageBox(parent);
mb->setWindowTitle(title);
mb->setText(text);
mb->show();
delete mb; // obvious, we delete the mb while it was still waiting for user, no wonder it's gone
इस कोड को एक ही
QMessageBox mb(parent);
mb.setWindowTitle(title);
mb.setText(text);
mb.show();
// obvious, as we exit the function mb which was allocated on stack gets deleted
भी इस कोड को करता है एक ही
QMessageBox *mb = new QMessageBox(parent);
mb->setWindowTitle(title);
mb->setText(text);
mb->show();
mb->deleteLater(); // surprisingly this doesn't help either
करता है
तो मैं कुछ जटिल तरीके से इसे हटाने के बिना, ठीक से शो() का उपयोग कैसे कर सकता हूं? क्या deleteOnClose()
फ़ंक्शन जैसा कुछ ऐसा है जो उपयोगकर्ता इसे बंद करने के बाद ही इसे हटाने के लिए कहता है?