自定义QToolTip样式

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文写作纯属个人兴趣使然,界面没有美化什么,纯属学习之用,如果有当之处,还请大家海涵,进入正题。

本文主要讲述了利用Qt5实现类似QQ好友列表中,当鼠标悬停在头像上面时弹出QQ好友信息的功能,总共包括2个部分,其一列表显示部分(显示QQ 好友,包括头像、姓名、简要概述),其二CToolTip部分,用于显示当前用户的信息,话不多说,直接上代码和图

QQ好友条信息显示部分:

这个功能其实网上有相关的资料的,直接上代码吧:ItemWidget.h

#ifndef ITEMWIDGET_H

#define ITEMWIDGET_H

#include

#include

#include

#include

#include

//class CLabel;

class ItemWidget : public QWidget

{

Q_OBJECT

public:

explicit ItemWidget(QWidget *parent = 0);

void setText(QPixmap pixmap, QString name, QString info);

void setText(QString info);

signals:

public slots:

private:

QLabel *labelIcon;

QLabel *labelName;

QLabel *labelInfo;

QHBoxLayout *horLayout;

QVBoxLayout *verlayout;

protected:

bool event(QEvent *e);

};

#endif // ITEMWIDGET_H

ItemWidget.cpp

#include "itemwidget.h"

#include "global.h"

#include "ctooltip.h"

#include

#include

ItemWidget::ItemWidget(QWidget *parent) :

QWidget(parent)

{

labelIcon = new QLabel(this);

labelName = new QLabel(this);

labelName->setStyleSheet("QLabel{color: green; font: 13pt bold;}"); labelInfo = new QLabel(this);

labelInfo->setStyleSheet("QLabel{color: gray;}");

verlayout = new QVBoxLayout();

verlayout->setContentsMargins(0, 0, 0, 0);

verlayout->addWidget(labelName);

verlayout->addWidget(labelInfo);

horLayout = new QHBoxLayout(this);

horLayout->setContentsMargins(2, 2, 2, 2);

horLayout->addWidget(labelIcon, 1, Qt::AlignTop);

horLayout->addLayout(verlayout, 4);

}

void ItemWidget::setText(QPixmap pixmap, QString name, QString info) { labelIcon->setPixmap(pixmap);

labelName->setText(name);

labelInfo->setText(info);

}

// 测试用的

void ItemWidget::setText(QString info) {

labelIcon->setText(info);

}

// 鼠标悬停的时候,显示当前用户简要信息

bool ItemWidget::event(QEvent *e) {

if (e->type() == QEvent::ToolTip) {

qDebug() << "tool tip show";

g_toolTip->showMessage(labelIcon->pixmap(),

labelName->text(),

labelInfo->text(),

QCursor::pos());

} else if (e->type() == QEvent::Leave) {

qDebug() << "tool tip leave";

g_toolTip->hide();

}

return QWidget::event(e);

}

然后是CToolTip自定义样式部分:.h

#ifndef CTOOLTIP_H

#define CTOOLTIP_H

#include

#include

#include

相关文档
最新文档