आपको अपने .ui
फ़ाइल से यूआई के साथ संवाद स्थापित करने की आवश्यकता है। क्यूटी uic
कंपाइलर आपके .ui
फ़ाइल से एक हेडर फ़ाइल जेनरेट करता है जिसे आपको अपने कोड में शामिल करने की आवश्यकता है। मान लीजिए कि आपकी .ui
फ़ाइल को about.ui
कहा जाता है, और संवाद को About
नाम दिया गया है, तो uic
फ़ाइल ui_about.h
फ़ाइल बनाता है, जिसमें Ui_About
कक्षा होती है। सेटअप अपने यूआई के विभिन्न दृष्टिकोणों सरलतम में आप कर सकते हैं
#include "ui_about.h"
...
void MainWindow::on_actionAbout_triggered()
{
about = new QDialog(0,0);
Ui_About aboutUi;
aboutUi.setupUi(about);
about->show();
}
एक बेहतर दृष्टिकोण,, विरासत का उपयोग करने के लिए इतना है कि आप किसी भी कार्यक्षमता के भीतर विशेष संवाद करने के लिए विशिष्ट लागू कर सकते हैं, क्योंकि यह आपके संवाद बेहतर समाहित है कर रहे हैं, उप वर्ग:
AboutDialog.h:
#include <QDialog>
#include "ui_about.h"
class AboutDialog : public QDialog, public Ui::About {
Q_OBJECT
public:
AboutDialog(QWidget * parent = 0);
};
AboutDialog.cpp:
+०१२३५१६४१०६१
AboutDialog::AboutDialog(QWidget * parent) : QDialog(parent) {
setupUi(this);
// perform additional setup here ...
}
उपयोग:
#include "AboutDialog.h"
...
void MainWindow::on_actionAbout_triggered() {
about = new AboutDialog(this);
about->show();
}
किसी भी मामले में, महत्वपूर्ण कोड setupUi()
विधि कॉल करने के लिए है।
बीटीडब्ल्यू: उपरोक्त कोड में आपका संवाद गैर-मोडल है। एक मोडल संवाद दिखाने के लिए, windowModality
Qt::ApplicationModal
पर अपने संवाद का ध्वज सेट करें या show()
के बजाय exec()
का उपयोग करें।
स्रोत
2012-10-29 07:08:55
धन्यवाद, एंड्रियास! इस पल के लिए सबसे आसान तरीका जा रहा है ... तथ्य यह है कि ui_about.h नहीं बनाया गया था, और यह अब पूर्व निर्धारित नहीं है। तो आपके द्वारा पहले निर्दिष्ट कोड के साथ प्रोजेक्ट संकलित नहीं करता है। क्या ui_about.h मैन्युअल रूप से बनाने का कोई तरीका है? .. –
आप मैन्युअल रूप से इसे 'uic about.ui -o ui_about.h' के साथ बना सकते हैं। लेकिन आपके निर्माण प्रणाली को इसका ख्याल रखना चाहिए - सुनिश्चित करें कि 'FORMS = about.ui' आपकी' .pro' फ़ाइल में शामिल है। –
क्या आपके पास .pro फ़ाइल में कोई अजीब प्रविष्टियां हैं? कुछ समय पहले संसाधन फ़ाइलों को नहीं बनाया जा रहा था: http://stackoverflow.com/questions/12380171/qmake-not-generating-binary-resource-files/12431570#12431570 –