您的位置:首页 > 编程语言 > C语言/C++

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: