2012-11-16 12 views
8

मैं उलझन में क्यों एक QPlainTextEdit विजेट खड़ी आकार नहीं बदलेंगे जब एक QFormLayout को जोड़ा गया हूँ। नीचे दिए गए कोड में टेक्स्ट फ़ील्ड सही ढंग से क्षैतिज रूप से स्केल करता है, लेकिन लंबवत पैमाने पर स्केल नहीं करता है।क्यूटी qplaintextedit का विस्तार नहीं formlayout खड़ी

क्या कोई इस व्यवहार को समझा सकता है और समाधान प्रदान कर सकता है? मैंने उन सभी चालों का प्रयास किया है जिन्हें मैं नहीं जानता हूं। QPlainTextEdit added to QFormLayout but not resizing vertically http://s9.postimage.org/ejvmp1wtr/qplaintextedit_in_qformlayout_not_resize.jpg

यह PyQt 4.5.2 और अजगर 32-बिट 2.6 का उपयोग कर विंडोज 7 पर है:

from PyQt4 import QtGui 

class Diag(QtGui.QDialog): 

    def __init__(self, parent, *args, **kwargs): 
     QtGui.QDialog.__init__(self, parent) 
     layout = QtGui.QFormLayout(self) 
     widg = QtGui.QPlainTextEdit(self) 
     layout.addRow('Entry', widg) 

if __name__ == '__main__': #pragma: no cover 
    app = QtGui.QApplication([]) 
    window = Diag(None) 
    window.show() 
    app.exec_() 

यहाँ QPlainTextEdit विजेट खड़ी आकार बदलने नहीं का एक उदाहरण है।

धन्यवाद।

+0

मैं दोनों लिनक्स और WinXP पर सटीक विपरीत व्यवहार मिलता है। टेक्स्ट-एडिट स्पेस को भरने के लिए लंबवत रूप से आकार बदलता है चाहे कोई भी सेटिंग क्यों चुनी जाती है (उदाहरण के लिए [setFieldGrowthPolicy()] (http://doc.qt.nokia.com/4.8-snapshot/qformlayout.html#fieldGrowthPolicy-prop), [ विस्तार करना दिशाएं()] (http://doc.qt.nokia.com/4.8-snapshot/qlayoutitem.html#expandingDirections), आदि) – ekhumoro

+0

हू, आप कौन सा क्यूटी संस्करण ईखुमोरो का उपयोग कर रहे हैं? मैंने अपनी पोस्ट में एक परिणाम छवि जोड़ दी है जो मुझे अपने कोड से प्राप्त परिणाम दिखाती है, और यह सुनिश्चित करने के लिए कि मैं समझता हूं कि आप कह रहे हैं कि आप विजेट को भरने के लिए विस्तारित क्षेत्र देखते हैं? –

+0

एक तस्वीर हजारों शब्दों के लायक है! ऐसा लगता है कि मैं आपकी समस्या को सही ढंग से समझ नहीं पाया। कृपया नीचे मेरा समाधान देखें। – ekhumoro

उत्तर

12

ऐसा लगता है कि, डिफ़ॉल्ट रूप से, QFormLayout केवल अपने sizeHint के अनुसार अपने फ़ील्ड की ऊंचाई का आकार बदल देगा।

इस व्यवहार को बदलने के लिए, vertical stretch के रूप में उपयुक्त समायोजित:

policy = widg.sizePolicy() 
policy.setVerticalStretch(1) 
widg.setSizePolicy(policy) 
+0

बिल्कुल सही! और मैंने आकार नीति के बारे में एक नई बात सीखी, धन्यवाद। –

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