Hello,

i have a QListWidget that displays a button bar, like in KDEs Kontact.
I attached my current implementation. This works fine with Linux/Oxygen theme 
(as you can see in this screenshot: http://imagebin.ca/img/Od0zEZ.jpg ) and 
Windows XP, but looks ugly in Windows Vista and Windows 7 (as you can see 
here: http://imagebin.ca/img/umwpMN1.jpg ).

Is it possible to extend the region of the background of a selected item in 
windows vista?

I even tried it with a QStyledItemDelegate and QStyleOptionViewItemV4 
(decorationSize attribute), but this didn't help.

Does anybody know what I should try else?

Thanks for your help,
Lukas
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created: Tue Dec  8 13:44:09 2009
#      by: PyQt4 UI code generator 4.6.2
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(544, 511)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout = QtGui.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.listWidget = QtGui.QListWidget(self.centralwidget)
        self.listWidget.setMaximumSize(QtCore.QSize(65, 16777215))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(224, 223, 223))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(38, 136, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(224, 223, 223))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(38, 136, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Highlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Highlight, brush)
        self.listWidget.setPalette(palette)
        self.listWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.listWidget.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged)
        self.listWidget.setDragDropMode(QtGui.QAbstractItemView.NoDragDrop)
        self.listWidget.setIconSize(QtCore.QSize(32, 32))
        self.listWidget.setTextElideMode(QtCore.Qt.ElideNone)
        self.listWidget.setMovement(QtGui.QListView.Static)
        self.listWidget.setFlow(QtGui.QListView.TopToBottom)
        self.listWidget.setProperty("isWrapping", True)
        self.listWidget.setResizeMode(QtGui.QListView.Fixed)
        self.listWidget.setLayoutMode(QtGui.QListView.SinglePass)
        self.listWidget.setGridSize(QtCore.QSize(65, 55))
        self.listWidget.setViewMode(QtGui.QListView.IconMode)
        self.listWidget.setUniformItemSizes(True)
        self.listWidget.setWordWrap(False)
        self.listWidget.setObjectName("listWidget")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("../../../../../../../usr/share/icons/oxygen/48x48/apps/kwalletmanager.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        item = QtGui.QListWidgetItem(self.listWidget)
        item.setIcon(icon)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap("../../../../../../../usr/share/icons/oxygen/48x48/actions/mail-flag.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        item = QtGui.QListWidgetItem(self.listWidget)
        item.setIcon(icon1)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap("../../../../../../../usr/share/icons/oxygen/48x48/apps/preferences-contact-list.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        item = QtGui.QListWidgetItem(self.listWidget)
        item.setIcon(icon2)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap("../../../../../../../usr/share/icons/oxygen/48x48/devices/phone.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        item = QtGui.QListWidgetItem(self.listWidget)
        item.setIcon(icon3)
        self.horizontalLayout.addWidget(self.listWidget)
        self.stackedWidget = QtGui.QStackedWidget(self.centralwidget)
        self.stackedWidget.setObjectName("stackedWidget")
        self.page = QtGui.QWidget()
        self.page.setObjectName("page")
        self.verticalLayout = QtGui.QVBoxLayout(self.page)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtGui.QLabel(self.page)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.stackedWidget.addWidget(self.page)
        self.Seite = QtGui.QWidget()
        self.Seite.setObjectName("Seite")
        self.verticalLayout_3 = QtGui.QVBoxLayout(self.Seite)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.label_3 = QtGui.QLabel(self.Seite)
        self.label_3.setObjectName("label_3")
        self.verticalLayout_3.addWidget(self.label_3)
        self.stackedWidget.addWidget(self.Seite)
        self.page_2 = QtGui.QWidget()
        self.page_2.setObjectName("page_2")
        self.verticalLayout_2 = QtGui.QVBoxLayout(self.page_2)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label_2 = QtGui.QLabel(self.page_2)
        self.label_2.setObjectName("label_2")
        self.verticalLayout_2.addWidget(self.label_2)
        self.stackedWidget.addWidget(self.page_2)
        self.Seite_2 = QtGui.QWidget()
        self.Seite_2.setObjectName("Seite_2")
        self.verticalLayout_4 = QtGui.QVBoxLayout(self.Seite_2)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.label_4 = QtGui.QLabel(self.Seite_2)
        self.label_4.setObjectName("label_4")
        self.verticalLayout_4.addWidget(self.label_4)
        self.stackedWidget.addWidget(self.Seite_2)
        self.horizontalLayout.addWidget(self.stackedWidget)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 544, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.listWidget.setCurrentRow(0)
        self.stackedWidget.setCurrentIndex(0)
        QtCore.QObject.connect(self.listWidget, QtCore.SIGNAL("currentRowChanged(int)"), self.stackedWidget.setCurrentIndex)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        __sortingEnabled = self.listWidget.isSortingEnabled()
        self.listWidget.setSortingEnabled(False)
        self.listWidget.item(0).setText(QtGui.QApplication.translate("MainWindow", "Summary", None, QtGui.QApplication.UnicodeUTF8))
        self.listWidget.item(1).setText(QtGui.QApplication.translate("MainWindow", "Messages - and some more text", None, QtGui.QApplication.UnicodeUTF8))
        self.listWidget.item(2).setText(QtGui.QApplication.translate("MainWindow", "Contacts", None, QtGui.QApplication.UnicodeUTF8))
        self.listWidget.item(3).setText(QtGui.QApplication.translate("MainWindow", "Devices", None, QtGui.QApplication.UnicodeUTF8))
        self.listWidget.setSortingEnabled(__sortingEnabled)
        self.label.setText(QtGui.QApplication.translate("MainWindow", "1st Tab ;)", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("MainWindow", "2nd Tab ;)", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("MainWindow", "3rd Tab ;)", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("MainWindow", "fkcfhujlxskcjklgjlfdghlfdghfd", None, QtGui.QApplication.UnicodeUTF8))

from PyQt4.QtCore import *
from PyQt4.QtGui import *
 
import ui_mainwindow
 
class MainWindow(QMainWindow,  ui_mainwindow.Ui_MainWindow):
   def __init__(self, parent):
      super(MainWindow,  self).__init__(parent)
      self.setupUi(self)
 
      maxSize = QSize()
      for i in range(self.listWidget.count()):
         itemSize = QStyledItemDelegate().sizeHint( self.listWidget.viewOptions(), self.listWidget.indexFromItem(self.listWidget.item(i)) )
 
         if itemSize.width() > maxSize.width():
            maxSize.setWidth(itemSize.width())
         if itemSize.height() > maxSize.height():
            maxSize.setHeight(itemSize.height())
 
      maxSize.setWidth(maxSize.width() + 5) # Just some spacing
 
      for i in range(self.listWidget.count()):
         self.listWidget.item(i).setSizeHint(maxSize)
 
      self.listWidget.setGridSize(maxSize)
      self.listWidget.setMaximumWidth(maxSize.width() + self.listWidget.rect().width() - self.listWidget.contentsRect().width() )
      self.listWidget.setMinimumWidth(maxSize.width() + self.listWidget.rect().width() - self.listWidget.contentsRect().width() )
 
      self.show()
 
app = QApplication([])
w = MainWindow(None)
app.exec_()

Attachment: mainwindow.ui
Description: application/designer

_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to