[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: [PyQt] Widget border and focus
From: Russell Valentine <russ () coldstonelabs ! org>
Date: 2010-02-24 3:47:48
Message-ID: 4B84A164.2060701 () coldstonelabs ! org
[Download RAW message or body]
I'm wondering if anyone has tried to make a custom widget and wanted a
border around your widget (sunken or otherwise) like all the other
widgets have. It then also gets highlighted when it has focus. I thought
that it was QFrame that is doing that, but by putting my custom widget
in a QFrame, nothing happens, even if I manually set the frame style.
Below is some simple code. I have a splitter, on one side is my custom
widget and on the other side is a QListView. You can see the border
around the QListView and when it has focus the border changes to
indicate it. You can not tell the customwidget has focus however.
I've been trying to figure this out for a couple of days now, and
haven't found a solution yet. I think I'm missing some simple concept.
If anyone can point me in the right direction I would appreciate it.
Thank you.
Russell Valentine
import sys
from PyQt4 import QtGui, QtCore
class CustomWidget(QtGui.QWidget):
def __init__(self, parent):
QtGui.QWidget.__init__(self, parent)
self.setSizePolicy(QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
self.setMinimumHeight(200)
self.setMinimumWidth(200)
self.setFocusPolicy(QtCore.Qt.StrongFocus)
def paintEvent(self, event):
painter=QtGui.QPainter(self)
b =
QtGui.QBrush(QtGui.QApplication.palette().color(QtGui.QPalette.Base))
painter.fillRect(0, 0, self.width(), self.height(), b)
class MainWindow(QtGui.QMainWindow):
def __init__(self, app):
QtGui.QMainWindow.__init__(self)
self.app=app
self.setWindowTitle("Frame test")
self.splitter=QtGui.QSplitter()
self.frame=QtGui.QFrame()
vbox=QtGui.QVBoxLayout(self.frame)
self.customWidget = CustomWidget(self)
vbox.addWidget(self.customWidget)
self.frame.setFocusProxy(self.customWidget)
self.list = QtGui.QListView()
self.splitter.addWidget(self.frame)
self.splitter.addWidget(self.list)
self.setCentralWidget(self.splitter)
if __name__ == "__main__":
app=QtGui.QApplication(sys.argv)
window = MainWindow(app)
window.show()
sys.exit(app.exec_())
_______________________________________________
PyQt mailing list PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic