मेरे पास एक क्यूटी अनुप्रयोग में QMainWindow है। जब मैं इसे बंद करता हूं, तो मैं इसे अपने वर्तमान पुनर्स्थापित आकार (खिड़की का आकार जब इसे अधिकतम नहीं किया जाता) को स्टोर करना चाहता हूं। जब मैं पुनर्स्थापना मोड में विंडो बंद करता हूं (यानी अधिकतम नहीं है) यह ठीक से काम करता है। लेकिन अगर मैं विंडो को बंद कर देता हूं तो इसे अधिकतम कर दिया जाता है, अगली बार जब मैं एप्लिकेशन शुरू करता हूं और एप्लिकेशन को पुनर्स्थापित करता हूं (क्योंकि यह अधिकतम मोड में शुरू होता है), तो उसे उस आकार को याद नहीं है जिसे इसे पुनर्स्थापित करना चाहिए। क्या इसे करने का कोई तरीका है?मैं क्यूटी में सत्रों के बीच विंडो आकार को कैसे स्टोर करूं?
उत्तर
रजिस्ट्री में वर्तमान सेटिंग्स को लिखने के लिए QWidget::saveGeometry सुविधा का उपयोग करें। (रजिस्ट्री को QSettings का उपयोग करके एक्सेस किया जाता है)। फिर पिछली स्थिति पर वापस जाने के लिए स्टार्टअप पर पुनर्स्थापना ज्यामिति() का उपयोग करें।
मुझे इस समस्या का भी सामना करना पड़ा है।
आप क्या कर सकते हैं: विंडो के आकार के अलावा, इसे अधिकतम करें या नहीं (QWidget::isMaximized()
) बचाएं।
अगली बार जब आप एप्लिकेशन शुरू करते हैं, तो पहले आकार (QWidget::resize()
) सेट करें और फिर उपयुक्त होने पर इसे अधिकतम करें (QWidget::showMaximized()
)। जब इसे बहाल किया जाता है, तो इसे सही आकार में वापस जाना चाहिए।
वर्क्स ठीक मेरे लिए कोई फर्क नहीं पड़ता। चूंकि प्रश्न 5 साल का है, मुझे लगता है कि यह क्यूटी अपडेट की वजह से है। –
मुझे पता चला कि यहां पिछले सभी उत्तरों का संयोजन Fedora 14 पर आवश्यक था। को आकार और स्थिति को बचाने के लिए विंडो को अधिकतम करने के लिए सावधान रहें!
void MainWindow::writePositionSettings()
{
QSettings qsettings("iforce2d", "killerapp");
qsettings.beginGroup("mainwindow");
qsettings.setValue("geometry", saveGeometry());
qsettings.setValue("savestate", saveState());
qsettings.setValue("maximized", isMaximized());
if (!isMaximized()) {
qsettings.setValue("pos", pos());
qsettings.setValue("size", size());
}
qsettings.endGroup();
}
void MainWindow::readPositionSettings()
{
QSettings qsettings("iforce2d", "killerapp");
qsettings.beginGroup("mainwindow");
restoreGeometry(qsettings.value("geometry", saveGeometry()).toByteArray());
restoreState(qsettings.value("savestate", saveState()).toByteArray());
move(qsettings.value("pos", pos()).toPoint());
resize(qsettings.value("size", size()).toSize());
if (qsettings.value("maximized", isMaximized()).toBool())
showMaximized();
qsettings.endGroup();
}
मुख्य() में, स्थिति सेटिंग विंडो पहली बार दिखाने से पहले पढ़ रहे हैं ...
MainWindow mainWindow;
mainWindow.readPositionSettings();
mainWindow.show();
... और इन ईवेंट हैंडलर्स सेटिंग को अपडेट के रूप में आवश्यक। (यह सेटिंग में होने वाले राईट ले जाने के दौरान हर माउस आंदोलन के लिए फ़ाइल और आकार बदलने के जो आदर्श नहीं है का कारण बनता है।)
void MainWindow::moveEvent(QMoveEvent*)
{
writePositionSettings();
}
void MainWindow::resizeEvent(QResizeEvent*)
{
writePositionSettings();
}
void MainWindow::closeEvent(QCloseEvent*)
{
writePositionSettings();
}
फिर भी, स्थिति के ऊर्ध्वाधर घटक बहुत सही नहीं है, यह अनदेखी किया जा रहा है विंडो शीर्षक बार की ऊंचाई ... किसी को भी है कि के साथ सौदा करने के लिए कैसे मुझे पता है :)
अच्छा उत्तर - यह कोड मैक ओएसएक्स पर एक आकर्षण की तरह काम करता है!:-) कुछ जगहों पर सेटिंग्स को एक्सेस करते समय सामने की कुछ सेटिंग्स को कोड डुप्लिकेशंस हटाते हैं, http://developer.qt.nokia.com/doc/qt-4.8/qsettings.html#basic-usage – ssc
देखें I यह सही है लेकिन उस पर इतना समय बिताए बिना परेशान नहीं किया, जब तक कि मुझे आपका नमूना कोड नहीं मिला जो एक आकर्षण की तरह काम करता है। :) – Devolus
छवि http://qt-project.org/doc/qt-4.8/application-windows.html शो में जाने, कि geometry.x()
और geometry.y()
बराबर नहीं x()
और y()
है, जो pos()
रूप में एक ही कर रहे हैं जानता है ।
मेरे मामले में, मैं का उपयोग करें:
x()
y()
width()
height()
और इन सफलतापूर्वक के साथ बहाल: यदि अधिकतम या नहीं
move()
resize()
- 1. क्यूटी: मैं वर्तमान में चल रही विंडो कैसे प्राप्त करूं?
- 2. परीक्षणों के बीच कैपिबरा सत्रों का पुन: उपयोग कैसे करूं?
- 3. मैं xna में विंडो/स्क्रीन आकार कैसे सेट करूं?
- 4. मैं wxwidgets में न्यूनतम विंडो आकार कैसे सेट करूं?
- 5. क्यूटी: अपनी नई सामग्री में विंडो का आकार कैसे बदलें
- 6. मैं विंडो में वेबकिट कैसे एम्बेड करूं?
- 7. सत्रों में स्टोर ऑब्जेक्ट्स सिम्फनी 2
- 8. मैं ऑर्डर कैसे स्टोर करूं?
- 9. PHP में विभिन्न सत्रों के बीच साझा ऑब्जेक्ट कैसे बनाएं?
- 10. मैं सभी फ्लास्क सत्रों को कैसे हटाऊं?
- 11. मैं क्यूटी एप्लिकेशन की पूरी विंडो के लिए पृष्ठभूमि रंग कैसे सेट करूं?
- 12. कोको बनावट विंडो क्यूटी
- 13. मैं अधिकतम विंडो के साथ जीवीआईएम कैसे शुरू करूं?
- 14. मैं क्यूटी और एसडीएल का एक साथ कैसे उपयोग करूं?
- 15. मैं कस्टम एसवीजी आकार को दीया में कैसे आयात करूं?
- 16. मैं क्यूटी में "ट्रे को कम करने" फ़ंक्शन को सही तरीके से कैसे कार्यान्वित करूं?
- 17. , मैं विंडो को वर्तमान विंडो कैसे बना सकता हूं?
- 18. मैं हमेशा एक निश्चित आकार के लिए Emacs में संकलन विंडो कैसे बना सकता हूं?
- 19. मैं कैसे तय करूं कि व्यूस्टेट में स्टोर करना है?
- 20. अधिसूचना विंडो। क्यूटी
- 21. मैं क्यूटी निर्माता में दृश्य सी ++ प्रोजेक्ट कैसे आयात करूं?
- 22. मैं एक विदेशी विंडो कैसे केंद्रित करूं?
- 23. मैं क्यूटी में अर्ध-पारदर्शी आयताकार कैसे आकर्षित करूं?
- 24. सत्रों को पृष्ठों के बीच सहेजा नहीं जा रहा है
- 25. क्यूटी में शारीरिक स्क्रीन आकार पाने के
- 26. मैं प्लॉट विंडो के विंडो आकार को कैसे सेट कर सकता हूं?
- 27. मैं अपनी कक्षाओं के बीच प्रतिनिधियों को कैसे स्थापित करूं?
- 28. emacs प्रोग्राम आकार में विंडो आकार बदलते हैं
- 29. क्यूटी/सी ++ - कॉन्फ़िगरेशन डेटा कैसे स्टोर करें
- 30. मैं विंडोज 8 स्टोर ऐप में आईएमएपी कैसे एक्सेस करूं?
यदि आप डॉकविड्ज की स्थिति और स्थिति को भी सहेजना चाहते हैं, न केवल आकार के लिए, आपको QWidget :: saveState() – mtbkrdave
दुर्भाग्यवश, इस तरह से किसी ऐसे मामले के लिए काम नहीं करना चाहिए जब आपके पास दूसरी मॉनिटर पर अधिकतम विंडो हो (कम से कम विंडोज 7 में)। पुनर्स्थापना के बाद ज्यामिति पहली मॉनीटर पर विंडो को अधिकतम करता है। मैं इसे हल करने के लिए iforce2d के उत्तर के समान दृष्टिकोण का उपयोग करता हूं। –
नोट: कोई भी 'QWidget :: saveState() 'कोई और नहीं है। कम से कम, यह क्यूटी 4.8 या 5.7 में नहीं है। 'saveState()' केवल 'QMainWindow' पर मौजूद प्रतीत होता है। – Len