[PySide] search widget
Sebastian Elner
sebastian at risefx.com
Thu Jun 7 10:45:24 CEST 2012
This is the search line edit class I use. The only thing to do is pass
the SearchLineEdit two valid pixmaps for the icons. I use the icons from
the tango desktop project. Notice that you can easily make the magnifier
icon a button with a menu, to have the user select the "search engine"
(uncomment the lines below). Tested with PyQt only.
from PySide import QtCore, QtGui
class SearchLineEdit(QtGui.QLineEdit):
def __init__(self, searchPixmap, clearPixmap, parent = None):
QtGui.QLineEdit.__init__(self, parent)
self.clearButton = QtGui.QToolButton(self)
self.clearButton.setIcon(QtGui.QIcon(clearPixmap))
self.clearButton.setIconSize(clearPixmap.size())
self.clearButton.setCursor(QtCore.Qt.ArrowCursor)
self.clearButton.setStyleSheet("QToolButton { border: none;
padding: 0px; }")
self.clearButton.hide()
self.clearButton.clicked.connect(self.clear)
self.textChanged.connect(self.updateCloseButton)
self.searchButton = QtGui.QToolButton(self)
self.searchButton.setIcon(QtGui.QIcon(searchPixmap))
self.searchButton.setIconSize(searchPixmap.size())
self.searchButton.setStyleSheet("QToolButton { border: none;
padding: 0px; }")
frameWidth =
self.style().pixelMetric(QtGui.QStyle.PM_DefaultFrameWidth)
self.setStyleSheet("QLineEdit { padding-left: %spx;
padding-right: %spx; } " % (self.searchButton.sizeHint().width() +
frameWidth + 1, self.clearButton.sizeHint().width() + frameWidth + 1))
msz = self.minimumSizeHint()
self.setMinimumSize(max(msz.width(),
self.searchButton.sizeHint().width() +
self.clearButton.sizeHint().width() + frameWidth * 2 + 2),
max(msz.height(),
self.clearButton.sizeHint().height() + frameWidth * 2 + 2))
# self.searchMenu = QtGui.QMenu(self.searchButton)
# self.searchButton.setMenu(self.searchMenu)
# self.searchMenu.addAction("Google")
# self.searchButton.setPopupMode(QtGui.QToolButton.InstantPopup)
def resizeEvent(self, event):
sz = self.clearButton.sizeHint()
frameWidth =
self.style().pixelMetric(QtGui.QStyle.PM_DefaultFrameWidth)
self.clearButton.move(self.rect().right() - frameWidth -
sz.width(),
(self.rect().bottom() + 1 - sz.height()) / 2)
self.searchButton.move(self.rect().left() + 1,
(self.rect().bottom() + 1 - sz.height()) / 2)
def updateCloseButton(self, text):
if text:
self.clearButton.setVisible(True)
else:
self.clearButton.setVisible(False)
app = QtGui.QApplication([])
w = SearchLineEdit(QtGui.QPixmap(r"system-search.png"),
QtGui.QPixmap(r"process-stop.png"))
w.show()
app.exec_()
On 06/07/2012 06:42 AM, Frank Rueter | OHUfx wrote:
> Hi all,
>
> quick question for the more experienced:
> Is there a core widget for text search? I'm after pretty something that
> looks pretty much like this one (at the top):
> http://farm5.static.flickr.com/4042/4574583703_f7be03c653.jpg
>
> What I like is it's compactness. A little icon on one side inside the
> box to indicate what it does, and a little "clear" icon on the other
> side to quickly clear out the search field to return everything.
>
> I'm happy to try and write my own but thought I'd check if I'm missing
> the obvious.
>
> Cheers,
> frank
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside
--
Sebastian Elsner - pipeline td - r i s e | fx
t: +49 30 20180300 sebastian at risefx.com
www.risefx.com
r i s e | fx GmbH
Schlesische Strasse 28 Aufgang B, 10997 Berlin
Geschäftsführer: Sven Pannicke, Robert Pinnow
Handelsregister Berlin HRB 106667 B
More information about the PySide
mailing list