The SearchLineEdit class is adapted from code presented by Girish Ramakrishnan in a Qt Labs post: http://labs.qt.nokia.com/2007/06/06/lineedit-with-a-clear-button
| 212 | // |
| 213 | // http://labs.qt.nokia.com/2007/06/06/lineedit-with-a-clear-button |
| 214 | SearchLineEdit::SearchLineEdit(QWidget *parent): |
| 215 | QLineEdit(parent) |
| 216 | { |
| 217 | previousResultButton = new QToolButton(this); |
| 218 | previousResultButton->setIcon(style()->standardIcon(QStyle::SP_ArrowLeft)); |
| 219 | previousResultButton->setCursor(Qt::ArrowCursor); |
| 220 | previousResultButton->setStyleSheet(QString::fromUtf8("QToolButton { border: none; padding: 0px; }")); |
| 221 | connect(previousResultButton, SIGNAL(clicked()), this, SLOT(handlePreviousResult())); |
| 222 | |
| 223 | nextResultButton = new QToolButton(this); |
| 224 | nextResultButton->setIcon(style()->standardIcon(QStyle::SP_ArrowRight)); |
| 225 | nextResultButton->setCursor(Qt::ArrowCursor); |
| 226 | nextResultButton->setStyleSheet(QString::fromUtf8("QToolButton { border: none; padding: 0px; }")); |
| 227 | connect(nextResultButton, SIGNAL(clicked()), this, SLOT(handleNextResult())); |
| 228 | |
| 229 | clearButton = new QToolButton(this); |
| 230 | clearButton->setIcon(style()->standardIcon(QStyle::SP_TitleBarCloseButton)); |
| 231 | clearButton->setCursor(Qt::ArrowCursor); |
| 232 | clearButton->setStyleSheet(QString::fromUtf8("QToolButton { border: none; padding: 0px; }")); |
| 233 | connect(clearButton, SIGNAL(clicked()), this, SLOT(clearSearch())); |
| 234 | |
| 235 | int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); |
| 236 | setStyleSheet(QString::fromUtf8("QLineEdit { padding-right: %1px; } ").arg( |
| 237 | nextResultButton->sizeHint().width() + |
| 238 | previousResultButton->sizeHint().width() + |
| 239 | clearButton->sizeHint().width() + frameWidth + 1)); |
| 240 | QSize msz = minimumSizeHint(); |
| 241 | setMinimumSize(qMax(msz.width(), nextResultButton->sizeHint().width() + |
| 242 | previousResultButton->sizeHint().width() + |
| 243 | clearButton->sizeHint().width() + frameWidth * 2 + 2), |
| 244 | qMax(msz.height(), clearButton->sizeHint().height() + frameWidth * 2 + 2)); |
| 245 | |
| 246 | connect(this, SIGNAL(returnPressed()), this, SLOT(prepareSearch())); |
| 247 | |
| 248 | setPlaceholderText(QString::fromUtf8("Search")); |
| 249 | } |
| 250 | |
| 251 | void SearchLineEdit::resizeEvent(QResizeEvent *) |
| 252 | { |