urllineedit.cpp
2017-01-03 21:44
232 查看
#include "urllineedit.h" #include <QToolButton> #include <QUrl> UrlLineEdit::UrlLineEdit(QWidget *parent) : QLineEdit(parent) , m_favButton(new QToolButton(this)) , m_clearButton(new QToolButton(this)) { m_clearButton->setIcon(QIcon(QStringLiteral(":closetab.png"))); m_clearButton->setVisible(false); m_clearButton->setCursor(Qt::ArrowCursor); QString style(QStringLiteral("QToolButton { border: none; padding: 1px; }")); m_clearButton->setStyleSheet(style); m_favButton->setStyleSheet(style); setStyleSheet(QStringLiteral("QLineEdit { padding-left: %1px; padding-right: %2px; } ") .arg(m_clearButton->sizeHint().width()) .arg(m_favButton->sizeHint().width())); int minIconHeight = qMax(m_favButton->sizeHint().height(), m_clearButton->sizeHint().height()); setMinimumSize(minimumSizeHint().width() + m_favButton->sizeHint().width() + m_clearButton->sizeHint().width(), qMax(minimumSizeHint().height(), minIconHeight)); connect(m_clearButton, &QToolButton::clicked, this, &QLineEdit::clear); connect(this, &QLineEdit::textChanged, [this](const QString &text) { m_clearButton->setVisible(!text.isEmpty() && !isReadOnly()); }); } QUrl UrlLineEdit::url() const { return QUrl::fromUserInput(text()); } void UrlLineEdit::setUrl(const QUrl &url) { setText(url.toString()); setCursorPosition(0); } void UrlLineEdit::setFavIcon(const QIcon &icon) { QPixmap pixmap = icon.pixmap(16, 16); m_favButton->setIcon(pixmap); } void UrlLineEdit::resizeEvent(QResizeEvent *event) { QLineEdit::resizeEvent(event); QSize clearButtonSize = m_clearButton->sizeHint(); m_clearButton->move(rect().right() - clearButtonSize.width(), (rect().bottom() - clearButtonSize.height()) / 2); m_favButton->move(rect().left(), (rect().bottom() - m_favButton->sizeHint().height()) / 2); }
相关文章推荐
- urllineedit.h
- 编辑距离(edit.c/cpp/pas)
- 错误 2 error C1083: 无法打开源文件:“..\UIEditBox\UIEditBoxImplWin.cpp”: No
- 编辑距离问题(edit.pas/c/cpp)
- cpp-btree - C++ B-tree - Google Project Hosting
- [每周一题]Edit Distance from LeetCode
- 带EditText的AlertDialog 白色主题 拿来就用
- windows下多线程编程: c++ , multithreading and dev-cpp
- ComboBoxEdit
- 向Edit添加内容
- Android:EditText 多行显示及所有属性
- 图书管理系统代码&nbsp;9&nbsp;EditpassW&nbsp;(…
- 二维码Aztec简介及其解码实现(zxing-cpp)
- cpp头文件和实现文件里面写什么
- edittext SearchView 失去焦点问题
- 二维码Data Matrix的解码实现(zxing-cpp)
- EditText有焦点(focusable为true)阻止输入法弹出
- cpp替换时 dialog ID 改变导致找不到类
- Jsoncpp的使用
- ALV EDIT_MASK应用-负号前置/小数位处理