2014-09-09 6 views
6

मैं दो बार विजेट जोड़ना चाहता हूं (QPushButton कहें) स्टेटस बार में, बाईं ओर एक और दूसरी तरफ दाएं तरफ।क्यूटी: स्टेटस बार में दो विजेट्स (QPushButton कहें), बाएं से एक और दूसरी तरफ दाएं तरफ कैसे जोड़ें?

मैं दो विजेट्स के बीच क्षैतिज स्पेसर जोड़ने की सोच रहा हूं, लेकिन यह नहीं पता कि कैसे जोड़ना है।

पीएस: मैंने दाईं ओर जोड़ने के लिए बाएं और addPermanentWidget() को जोड़ने के लिए addWidget() का उपयोग करने का प्रयास किया लेकिन यह साफ दिखता नहीं है और यह सही नहीं लगता है।

+0

वास्तव में क्या आपकी आवश्यकता है? कृपया इसे और स्पष्टता के साथ समझाएं। (उदाहरण शायद सहायक हो सकते हैं) – Pratham

+0

मैं स्टेटस बार पर दो पुश बटन जोड़ना चाहता हूं, एक बाएं तरफ और दूसरी तरफ दाएं तरफ जैसे कि उनके पास संबंधित बाएं और दाएं सीमाओं से समान दूरी है। दूसरे शब्दों में, एक बटन को गठबंधन छोड़ दिया जाना चाहिए और अन्य को सही गठबंधन किया जाना चाहिए। – user2653062

उत्तर

7

आप एक विजेट में एक लेआउट के लिए दो बटन जोड़ने के लिए और QStatusBar::addWidget का उपयोग कर स्थिति पट्टी करने के लिए विजेट जोड़ सकते हैं:

QWidget * widget = new QWidget(); 
QPushButton * leftBut = new QPushButton("Left"); 
QPushButton * rightBut = new QPushButton("Right"); 
QGridLayout * layout = new QGridLayout(widget); 
layout->addWidget(leftBut,0,0,1,1,Qt::AlignVCenter | Qt::AlignLeft); 
layout->addWidget(rightBut,0,1,1,1,Qt::AlignVCenter | Qt::AlignRight); 
ui->statusBar->addWidget(widget,1); 
+0

इस लेआउट को सेट करने के बाद संदेश कहां दिखाई देंगे? क्या यह अभी भी काम करेगा? – Overdrivr

+0

@Overdrivr आप 'QWidget' के बजाय 'QLabel' का उपयोग कर सकते हैं और इसे इस तरह से पारदर्शी बना सकते हैं: https://stackoverflow.com/questions/23948453/c-over-qt-controlling-transparency-of-labels- और-बटन/23948901 # 23948901 – Nejat

0

मुझे लगता है कि सबसे आसान तरीका उपयोग कर रहा है एक QGridLayout मान कि स्थिति पट्टी है या विजेट से उतरता है आप यह कर सकते हैं (ईमानदारी से मैं वैसे भी एक स्थिति पट्टी को संशोधित करने की कोशिश कभी नहीं):

QGridLayout *myGridLayout = new QGridLayout(); 
statusbar->setLayout(myGridLayout) 

QPushButton *button1 = new QPushButton(this); 
myGridLayout->addWidget(button1,0,0,1,1); 

QPushButton *button2 = new QPushButton(this); 
myGridLayout->addWidget(button2,X,0,1,1); 

सबसे बड़ी है X जितनी अधिक जगह आप छोड़ना चाहते हैं, मैं 3 से शुरू करने का सुझाव दूंगा और फिर यह देखने के लिए कुछ परीक्षण करें कि यह कैसा दिखता है।

1

मैं दो विगेट्स के बीच में क्षैतिज स्पेसर जोड़ने के बारे में सोच रहा हूँ, लेकिन डॉन कैसे नहीं जोड़ना है।

यहां "नकली" स्पेसर का उपयोग करने का एक तरीका है।

QPushButton *leftButton = new QPushButton("Left"); 
QPushButton *rightButton = new QPushButton("Right"); 
QLabel *spacer = new QLabel(); // fake spacer 
ui->statusBar->addPermanentWidget(leftButton); 
ui->statusBar->addPermanentWidget(spacer, 1); 
ui->statusBar->addPermanentWidget(rightButton); 

addPermanentWidget में दूसरा पैरामीटर "विजेट दी स्थिति पट्टी बढ़ती और घटती के रूप में के लिए एक उपयुक्त आकार की गणना करने के लिए इस्तेमाल किया गया" है।

डेमो:

Result looks like this.

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