2009-08-05 16 views
5

क्या शीर्ष-बाएं कोने पर विंडो आइकन के बिना विंडो बनाने के लिए कोई तरीका है (जैसे QDialog)? मैंने एक पारदर्शी आइकन का उपयोग करने की कोशिश की है लेकिन यह वहां एक खाली जगह छोड़ देता है।कोई विंडो आइकन (सिस्टम मेनू) के साथ क्यूटी संवाद

संपादित करें: नीचे richardwb के समाधान सिस्टम मेनू निकाल देता है, लेकिन यह भी कम से कम/अधिकतम/बंद (कैप्शन बटन) के रूप में अच्छी तरह से निकाल देता है। यह अभी के लिए कर सकता है, लेकिन उम्मीद है कि एक समाधान है जो कैप्शन बटन को संरक्षित करता है।

+0

कौन सा ऑपरेटिंग सिस्टम? यह निश्चित रूप से प्लेटफॉर्म-विशिष्ट होगा (यदि संभव हो तो)। – rohanpm

+0

ओह, क्षमा करें। विंडोज के लिए, लेकिन उम्मीद है कि एक क्रॉस-प्लेटफ़ॉर्म समाधान मौजूद है। – swongu

उत्तर

10

आप सब पर किसी भी कैप्शन बटन की जरूरत नहीं है, तो आप की स्थापना करके इस लक्ष्य को हासिल कर सकते हैं कुछ window flag hints:

setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint); 

क्यूटी के डेमो आवेदन आप इन झंडे (क्यूटी डेमो के साथ प्रयोग करने देता है कि एक नमूना आवेदन किया है -> विजेट-> विंडो ध्वज) यदि आप देखना चाहते हैं कि विभिन्न संयोजन क्या करते हैं।


दूसरी ओर, यदि आप कम से कम/अधिकतम/बंद बटन के किसी भी, तो आप देखेंगे चाहते क्यूटी दिखाने के लिए सिस्टम मेनू और विंडो आइकन बाध्य करती है। मुझे लगता है कि यह प्लेटफार्मों को सामान्यीकृत करने वाला क्यूटी है, क्योंकि के साथ एक बंद बटन लेकिन बिना सिस्टम मेनू और विंडो आइकन के साथ मूल विंडोज संवादों के उदाहरणों को ढूंढना बहुत आसान है।

#if defined(Q_WS_WIN) 
    // don't forget to #include <windows.h> 
    HWND hwnd = winId(); 
    LONG_PTR style = GetWindowLongPtr(hwnd, GWL_STYLE); 
    style &= ~WS_SYSMENU; // unset the system menu flag 
    SetWindowLongPtr(hwnd, GWL_STYLE, style); 
    // force Windows to refresh some cached window styles 
    SetWindowPos(hwnd, 0, 0, 0, 0, 0, 
     SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); 
#endif 

संपादित करें::

उस मामले में, आप कुछ Windows विशिष्ट कोड, इस के समान (untested) की आवश्यकता होगी swongu से टिप्पणी की है, यह केवल काम करता है आप एक के बिना कोई समाप्त करें बटन करना चाहते हैं सिस्टम मेनू यदि आप न्यूनतम/अधिकतम बटन चाहते हैं लेकिन कोई सिस्टम मेनू नहीं चाहते हैं, तो आप भाग्य से बाहर हैं।

+0

इस विचार के लिए धन्यवाद। दुर्भाग्यवश, आपका विंडोज कोड स्निपेट क्यूटी मामले की तरह काम करता है - एक बार जब सिस्टम मेनू गायब हो जाता है, तो कैप्शन बटन भी होता है। एमएसडीएन का कहना है कि 'WS_MAXIMIZEBOX' और' WS_MINIMIZEBOX' को 'WS_SYSMENU' को उठाया जाना आवश्यक है। – swongu

+0

हाँ, वे करते हैं। हालांकि, आप कैप्शन पर एक करीबी बटन रखने से दूर हो सकते हैं। मैं इसे साफ़ कर दूंगा। – richardwb

+0

मुझे बस बंद बटन चाहिए (कोई सिस्टम मेनू नहीं, अधिकतम/छोटा करें), लेकिन यह मेरे लिए काम नहीं करता है। बंद बटन भी गायब हो जाता है। मैंने क्यूटी विंडो झंडे को क्यूटी :: संवाद में सेट किया है क्यूटी :: कस्टमाइज़ विन्डोहिंट | क्यूटी :: विंडो टिटलहिंट | क्यूटी :: WindowCloseButtonHint। –

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