⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smilelabel.cpp

📁 用qt4 编写的局域网聊天工具
💻 CPP
字号:
/*************************************************************************** *   Copyright (C) 2007 by Anistratov Oleg                                 * *   ower@users.sourceforge.net                                            * *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License version 2        * *   as published by the Free Software Foundation;                         * *                                                                         * *   This program is distributed in the hope that it will be useful,       * *   but WITHOUT ANY WARRANTY; without even the implied warranty of        * *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         * *   GNU General Public License for more details.                          * *                                                                         * ***************************************************************************/#include "smilelabel.h"#include <QSize>#include <QToolTip>#include <QPixmap>SmileLabel::SmileLabel(QWidget *parent) :  QLabel(parent),  m_inited(false),  m_selected(false){  m_movie  = new QMovie(this);  setMovie(m_movie);  setAlignment(Qt::AlignCenter);  setMouseTracking(true);}SmileLabel::~SmileLabel(){}bool SmileLabel::load( const QString & prefix ){  if(!m_filename.isEmpty())  {    QPixmap pix(prefix + "/" + m_filename);    m_movie->setFileName(prefix + "/" + m_filename);//     m_movie->start();    m_movie->jumpToNextFrame();    m_inited = (m_movie->isValid() && !m_smileStrings.isEmpty ());  }  else    return false;  return true;}void SmileLabel::setSmileText(const QStringList & list){  m_smileStrings = list;  if(!m_smileStrings.isEmpty () && m_movie->isValid() && !m_filename.isEmpty())  {    setToolTip(m_smileStrings[0]);    m_inited = true;  }  else    m_inited = false;}void SmileLabel::mouseMoveEvent(QMouseEvent* ev){  QPainter painter;  if(!isVisible())    return;  if(ev->x() <= 0 || ev->x() >= width() - 1 || ev->y() <= 0 || ev->y() >= height() - 1)  {    setMovie(m_movie);    m_movie->stop();    m_selected = false;  }  else  {    m_movie->jumpToFrame(0);    if(m_movie->format() == QString("gif").toAscii() || m_movie->format() == QString("mng").toAscii())    {      setMovie(m_movie);      m_movie->start();    }    else    {      QPixmap pix(width(), height());      QPixmap mask(width(), height());      pix = m_movie->currentPixmap();      mask.fill(Qt::white);      QPixmap tmp(width(), height());      int trans = 150;      tmp.fill(QColor(trans, trans, trans));      mask.setAlphaChannel(tmp);      painter.begin(&pix);      painter.drawPixmap(0, 0, mask);      painter.end();      setPixmap(pix);    }    m_selected = true;    emit hovered();  }}void SmileLabel::mousePressEvent(QMouseEvent * ev){  if(m_inited)   emit clicked(m_smileStrings[0]);  setMovie(m_movie);  ev->accept();}int SmileLabel::pixmapWidth(){  return m_movie->currentPixmap().width();}int SmileLabel::pixmapHeight(){  return m_movie->currentPixmap().height();}void SmileLabel::unselect(){  if(m_selected)  {    setMovie(m_movie);    m_movie->stop();    m_selected = false;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -