मैंने QMessageBox
जैसी कार्यक्षमता को लागू करने के लिए QDialog
उपखंडित किया है (मुझे अनुकूलन की अनुमति देने के लिए इसकी आवश्यकता है)। इसमें एक टेक्स्ट संदेश है और ठीक है, बटन रद्द करें। मैं इसे अवरुद्ध करने के लिए exec()
का उपयोग करके संवाद दिखा रहा हूं। अब, जब मैं ठीक/रद्द करता हूं तो मैं सत्य/झूठे मूल्यों को कैसे वापस कर सकता हूं?QDialog exec() और परिणाम मान प्राप्त करना
मैं setResult()
करने के लिए बटन को जोड़ने की कोशिश की और उसके बाद, परिणाम मान क्लिक किए जाने पर, लेकिन 1. बटन पर क्लिक करने से संवाद बॉक्स 2. वापसी मान बंद नहीं होती है सही नहीं है। मेरे द्वारा लिखे गए कोड के बाद निम्नलिखित है। मुझे लगता है कि मैं निष्पादन/परिणाम भाग में गलत हूं - लेकिन मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए।
class MyMessageBox : public QDialog
{
Q_OBJECT
private slots:
void onOKButtonClicked(){ this->setResult(QDialog::Accepted);}
void onCancelButtonClicked(){ this->setResult(QDialog::Rejected);}
public:
MyMessageBox(QMessageBox::Icon icon, const QString & title, const QString & text, bool showCancelButton = true, QWidget *parent = 0);
virtual void resizeEvent(QResizeEvent* e);
QDialog::DialogCode showYourself()
{
this->setWindowModality(Qt::ApplicationModal);
this->exec();
return static_cast<QDialog::DialogCode>(this->result());
}
};
उपयोगकर्ता वर्ग संवाद का दृष्टांत होगा और showYourself फोन() मान लौटने की उम्मीद है जो और भी करीब (और हटाएं)।
मैंने आंशिक कोड पोस्ट किया है। अगर आपको और चाहिए तो मुझे बताएं और मैं पूरा संस्करण पोस्ट करूंगा।
धन्यवाद! वह प्रबुद्ध है। अगर मैं ऐसा करता हूं, तो क्या मुझे वस्तु को स्पष्ट रूप से हटाने की ज़रूरत है, या क्या यह आंतरिक रूप से देखभाल की जाती है? – go4sri
यदि ऑब्जेक्ट में कोई अभिभावक है तो माता-पिता को हटा दिए जाने पर इसे हटा दिया जाता है। आप हटाए जाने के लिए 'QObject :: deleteLater()' का उपयोग कर सकते हैं। जब आप यह सुनिश्चित करने के लिए जानते हैं कि किसी ऑब्जेक्ट का अब और उपयोग नहीं किया जाता है (इस ऑब्जेक्ट से संबंधित कोई ईवेंट आसपास नहीं है) तो आप पुराने पुराने डिलीट का उपयोग कर सकते हैं। – UmNyobe
बहुत अच्छा जवाब! धन्यवाद! – Victor