urllineedit.cpp

转载 2017年01月03日 21:44:26
#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);
}

相关文章推荐

caffe caffe.cpp 程序入口分析

caffe.cpp  程序入口分析,   (1)main()函数中,输入的train,test,device_query,time。 通过下面两行进入程序。     if (argc == 2) {...

CPP(七):priority_queue的实现与大根堆的使用

实现的一个按int类型值大小从小打到

Cpp Concurrency In Action(读书笔记3)——同步并发操作

等待一个事件或其他条件 第一,它可以持续的检查共享数据标志(用于做保护工作的互斥量),直到另一线程完成工作时对这个标志进行重设。 第二个选择是在等待线程在检查间隙,使用 std::this_thr...
  • BestZem
  • BestZem
  • 2016年10月31日 10:52
  • 1926

Ubuntu环境下使用g++编译cpp文件

第一次用g++编译cpp文件的时候报了undefined reference的错误,自定义类中的函数全部都无法找到,查找资料后发现调用的类是需要链接的,本文以一个小例子描述编译的过程。其中class2...

C++类中各种不同类型成员根据是否static 、是否const类型的初始化方法不尽相同,写代码时经常搞乱,网上搜了一下资料,全部总结一下。一、例子 [cpp] view plaincopy ---

C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法 有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括: a.引用 b...

【deep learning学习笔记】注释yusugomori的RBM代码 --- cpp文件 -- 模型训练

关键是 CD-k(contrastive_divergence)算法的实现。 // the CD-k algorithm void RBM::contrastive_divergence ( ...

如何在visual studio下编译zxing cpp,以及zxing c++的使用

刚开始请允许我发一下牢骚,刚开始学c++,然后,在使用zxing c++解析二维码的时候,需要找资料。但是,我所找的资料都有问题,下载zxing cpp之后,编译的时候各种问题,当时头都大了。而且,网...

Cpp Concurrency In Action(读书笔记8)——高级线程管理

线程池   线程池:一个预先设定的线程组,会将任务指定给池中的线程。在大多数系统中,将每个任务指定给某个线程是不切实际的,不过可以利用现有的并发性,进行并发执行。线程池就提供了这样的功能,提交到线程...
  • BestZem
  • BestZem
  • 2016年11月23日 23:14
  • 357

用Unity制作游戏,你需要深入了解一下IL2CPP

转载地址:http://www.gameres.com/339671.html Unity 官方博客译文(看完这篇博文非常的兴奋,第一时间想到的是翻译后介绍给大家,文章是以IL2CP...

caffe源码深入学习1:caffe.cpp解析

距离笔者接触深度学习已经将近半年了,在这段时间中,笔者最先接触的是lenet网络,然后就学习了2015-2016年非常火爆的fast-rcnn与faster-rcnn,到最近自己利用深度学习搞事情,笔...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:urllineedit.cpp
举报原因:
原因补充:

(最多只允许输入30个字)