Hi,

I have two QListWidgets living in a QSplitter.
I need the items to be editable.
Some of the item labels are longer than the visible label.
When I edit one, it's selection border extends right across the splitter like this:


It seems that the selection box is as large as the longest item label in the list.
How can I control this so it stays within it's own splitter space?

When I open it in a host app that bundles it's own PySide (and has it's one style sheet for all widgets), this problem does not occur, so I'm hoping there is a simple solution here.

Attached is the sample code.

Cheers,
frank
#!/usr/bin/env python
import Analysis
from PySide import QtGui, QtCore

class FileAnalyserPanel(QtGui.QDialog):
    
    def __init__(self, parent=None):
        super(FileAnalyserPanel, self).__init__(parent)
        self.path = QtCore.QDir.homePath()
        self.buildUI()
        self.connectSignals()

    def buildUI(self):
        '''Sets all the rewuired layouts and widgets'''
        # layouts
        mainLayout = QtGui.QVBoxLayout()
        self.setLayout(mainLayout)
        topLayout = QtGui.QHBoxLayout()
        middleLayout1 = QtGui.QHBoxLayout()
        middleLayout1.setSizeConstraint(QtGui.QLayout.SetFixedSize)
        middleLayout2 = QtGui.QHBoxLayout()
        middleLayout2.setSizeConstraint(QtGui.QLayout.SetFixedSize)
        bottomLayout = QtGui.QHBoxLayout()

        # widgets
        pathLabel = QtGui.QLabel('root path')
        self.pathWidget = QtGui.QLabel()
        self.pathWidget.setFrameStyle(QtGui.QFrame.StyledPanel|
                                      QtGui.QFrame.Sunken)
        self.pathBtn = QtGui.QPushButton('Set Path...')
        splitterWidget = QtGui.QSplitter()
        self.fileListWidgetTotal = QtGui.QListWidget()
        self.fileListWidgetAccepted = QtGui.QListWidget()
        self.fileListWidgetRejected = QtGui.QListWidget()
        splitterWidget.addWidget(self.fileListWidgetAccepted)
        splitterWidget.addWidget(self.fileListWidgetRejected)
        
        labelAccepted = QtGui.QLabel('Accepted')
        labelAccepted.setSizePolicy(QtGui.QSizePolicy.Policy.Expanding, QtGui.QSizePolicy.Policy.Fixed)
        labelRejected = QtGui.QLabel('Rejected')
        labelRejected.setSizePolicy(QtGui.QSizePolicy.Policy.Expanding, QtGui.QSizePolicy.Policy.Fixed)
        self.counterAccepted = QtGui.QLCDNumber()
        self.counterAccepted.setSegmentStyle(QtGui.QLCDNumber.Flat)
        self.counterAccepted.setSizePolicy(QtGui.QSizePolicy.Policy.Expanding, QtGui.QSizePolicy.Policy.Fixed)
        self.counterRejected = QtGui.QLCDNumber()
        self.counterRejected.setSegmentStyle(QtGui.QLCDNumber.Flat)
        self.counterRejected.setSizePolicy(QtGui.QSizePolicy.Policy.Expanding, QtGui.QSizePolicy.Policy.Fixed)
    
        # add widgets to layouts
        topLayout.addWidget(pathLabel)
        topLayout.addWidget(self.pathWidget, True)
        topLayout.addWidget(self.pathBtn)
        topLayout.addWidget(splitterWidget)
        middleLayout1.addWidget(labelAccepted)
        middleLayout1.addWidget(labelRejected)
        middleLayout2.addWidget(self.counterAccepted)
        middleLayout2.addWidget(self.counterRejected)
        mainLayout.addLayout(topLayout)
        mainLayout.addLayout(middleLayout1)
        mainLayout.addWidget(splitterWidget)
        mainLayout.addLayout(middleLayout2)
        mainLayout.addLayout(bottomLayout)

    def connectSignals(self):
        self.pathBtn.clicked.connect(self.setPath)

    def setPath(self):
        #self.path = QtGui.QFileDialog.getExistingDirectory(self,
                                                      #'Choose Path to analyse',
                                                      #self.path)
        self.pathWidget.setText(self.path)
        listOfStuff = ['a'*100, 'b'*50, 'c'*20]
        for f in listOfStuff:
            item = QtGui.QListWidgetItem(f)
            item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
            self.fileListWidgetAccepted.addItem(item)

if __name__ == '__main__':
    import sys

    app = QtGui.QApplication(sys.argv)
    panel = FileAnalyserPanel()
    panel.show()
    panel.raise_()
    sys.exit(app.exec_())
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to