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_()
mainwindow.ui
Description: application/designer
_______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
