में मेनूबार के निचले भाग में 'अवरोही पैनल' को कैसे संलग्न करें जब आप मैक पर फ़ाइल सहेजते हैं, तो एक पैनल थोडा वास्तव में ठंडा तरीके से शीर्ष बार से नीचे उतरता है। मैं एक वर्ग बनाना चाहता हूं जो क्यूटी फ्रेमवर्क का उपयोग कर एक समान चीज करता है। ऐसी कई चीजें हैं जिनके बारे में मैं उलझन में हूं:QMainWindow
जब पैनल उतरता है, तो मूल विंडो में इनपुट अवरुद्ध होना चाहिए। QDialog के साथ यह आसान है क्योंकि इसमें setModal() विधि है, हालांकि - डिफ़ॉल्ट पॉप-आउट द्वारा QDialogs। मुझे यकीन नहीं है कि इस के आसपास कैसे जाना है।
एक QMainProject में, DescendingPanel क्लास का एक QMenua नया उदाहरण बनाया गया है। आप ऐसा कैसे करेंगे, मान लीजिए कि मेनूबार के नीचे अन्य विजेट हैं। DescendingPanel उनके ऊपर दिखाई देना चाहिए।
मैं वास्तव में इसके साथ किसी भी मदद की सराहना करता हूं।
संपादित
मैं एक विचार है कि बजाय मेनूबार के तहत संवाद पेगिंग की, बस इसे वहाँ के तहत दिखाई बनाने के लिए और खिड़की के फ्रेम को दूर किया था। इस तरह, यह एक भ्रम देगा कि यह वहां से बाहर निकल गया। संभोग, घटनाओं को स्थानांतरित करना भी होगा ताकि संवाद हमेशा मेनूबार के अधीन हो लेकिन वह बाद में है। यहां वह कोड है जिसका उपयोग मैंने मेन्यूबार के तहत उतरने के लिए DescendingDialog प्राप्त करने के लिए किया था।
class DescendingDialog : public QWidget
{
QMainWindow* Window;
QWidget* Menu;
QPoint GlobalLocationOfMenu;
int DialogWidth;
int DialogHeight;
int X()
{
int XDistanceOfPanel = GlobalLocationOfMenu.x() + ((Menu->width()/2) - (this->DialogWidth/2));
//GlobalLocationOfMenu.x() returns 0;
return XDistanceOfPanel;
}
int Y()
{
int YDistanceOfPanel = GlobalLocationOfMenu.y()+Menu->height();
//GlobalLocationOfMenu.y() returns 0;
return YDistanceOfPanel;
}
void SetGeometry()
{
this->setGeometry(this->X(),this->Y(),this->DialogWidth,this->DialogHeight);
}
public:
DescendingDialog(QMainWindow* Window,int DialogWidth,int DialogHeight):QWidget(NULL)
{
this->Window = Window;
this->Menu = this->Window->menuWidget();
this->DialogWidth = DialogWidth;
this->DialogHeight = DialogHeight;
QPoint RelativeLocationOfMenu = this->Menu->pos();
this->GlobalLocationOfMenu = QWidget::mapToGlobal(RelativeLocationOfMenu);
this->SetGeometry();
}
};
क्योंकि GlobalLocationOfMenu.x() और .y() लौट आए 0 इसलिए संवाद प्रकट नहीं होता है, जहां मैं यह करना चाहते हैं यह काम नहीं किया।
मुझे बस एक विचार था। QToolbar के निचले भाग में संवाद को घुमाने के बजाय, मैं अपने निर्देशांक को एक सापेक्ष तरीके से सेट करने का प्रयास कर सकता हूं ताकि पैनल हमेशा स्क्रीनबार के नीचे दिखाई दे, भले ही पैनल स्क्रीन पर चारों ओर स्थानांतरित हो। मैं यह देखने जा रहा हूं कि मैं इसे कार्यान्वित कर सकता हूं या नहीं। यदि यह काम करता है, तो जो कुछ भी बचा है, वह ग्लास-फ़्रेम को हटा देगा (जिसमें अधिकतम, न्यूनतम और बंद बटन शामिल हैं) - उन्हें हटाने से इस तथ्य को छिपाना होगा कि संवाद वास्तव में अलग विंडो है। –
मैंने उपर्युक्त करने का प्रयास किया, लेकिन मैं टूलबार के नीचे संवाद दिखाने के लिए संवाद नहीं प्राप्त कर सकता। मुझे pos() का उपयोग करके टूलबार का स्थान मिला और टूलबार से संबंधित संवाद की स्थिति सेट की गई, लेकिन यह ज्यादातर मामलों में ऑफ-सेंटर दिखाई दी। –
क्या आपने mapToGlobal विधियों का उपयोग किया था? याद रखें कि pos पेरेंट स्थिति –