简述

经常使用企鹅的小伙伴一定对登录失败的提示框很熟悉,主要涉及窗口透明并添加图标、提示信息、关闭按钮的显示等。

我们可以利用QWidget创建一个提示框,然后通过样式设置我们想要的效果。

效果

源码

QMessageWidget.h

#ifndef MESSAGE_WIDGET
#define MESSAGE_WIDGET #include <QWidget> class QLabel;
class QPushButton; class QMessageWidget : public QWidget
{
Q_OBJECT public:
explicit QMessageWidget(QWidget *parent = 0);
~QMessageWidget();
// 设置显示文本
void setText(const QString &text); protected:
void paintEvent(QPaintEvent *event); private:
QLabel *m_pMessageLabel;
}; #endif // MESSAGE_WIDGET

QMessageWidget.cpp

#include <QLabel>
#include <QStyleOption>
#include <QPainter>
#include <QPushButton>
#include <QHBoxLayout>
#include "QMessageWidget.h" QMessageWidget::QMessageWidget(QWidget *parent)
: QWidget(parent)
{
setFixedHeight(25); setAutoFillBackground(true);
setObjectName("messageWidget"); // 提示图标
QLabel *pIconLabel = new QLabel(this);
m_pMessageLabel = new QLabel(this);
QPushButton *pCloseButton = new QPushButton(this); pCloseButton->setFixedSize(8, 8);
pIconLabel->setFixedSize(16, 16); pIconLabel->setScaledContents(true);
pIconLabel->setObjectName("informationLabel"); m_pMessageLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
m_pMessageLabel->setObjectName("highlightLabel");
m_pMessageLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); pCloseButton->setObjectName("closeTipButton"); QHBoxLayout *pLayout = new QHBoxLayout();
pLayout->addWidget(pIconLabel);
pLayout->addWidget(m_pMessageLabel);
pLayout->addWidget(pCloseButton);
pLayout->setSpacing(5);
pLayout->setContentsMargins(3, 3, 5, 3); setLayout(pLayout); connect(pCloseButton, SIGNAL(clicked(bool)), this, SLOT(close()));
} QMessageWidget::~QMessageWidget()
{ } // 设置显示文本
void QMessageWidget::setText(const QString &text)
{
m_pMessageLabel->setText(text);
} // 设置样式需要重写
void QMessageWidget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event); QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

样式

// 界面样式
QWidget#messageWidget {
background: rgba(255, 255, 255, 20%);
} // 提示信息样式
QLabel#highlightLabel {
color: rgb(0, 160, 230);
} // 图标样式
QPushButton#closeTipButton {
border-radius: none;
border-image: url(:/Images/tipClose);
background: transparent;
}
QPushButton#closeTipButton:hover {
border-image: url(:/Images/tipCloseHover);
}
QPushButton#closeTipButton:pressed {
border-image: url(:/Images/tipClosePressed);
}

这里实现了设置信息,贾娜比隐藏等效果,可以在此基础上进行扩展。背景色、字体颜色、图标等样式都可以自行设置,主要是实现思路,愿大家共勉。

Qt之透明提示框的更多相关文章

  1. qt之透明提示框(模拟qq) (非常漂亮)

    Qt实现类似QQ的登录失败的提示框,主要涉及窗口透明并添加关闭按钮,以及图标和信息的显示等. 直接上代码: #include "error_widget.h" ErrorWidge ...

  2. Qt之等待提示框(QMovie)

    简述 关于gif的使用在实际项目中我用的并不多,因为我感觉瑕疵挺多的,很多时候锯齿比较严重,当然与图存在很大的关系. 关于生成gif的方法可以提供一个网站preloaders,基本是可以满足需求的. ...

  3. Qt之等待提示框(QTimer)

    简述 上节讲述了关于QPropertyAnimation实现等待提示框的显示,本节我们使用另外一种方案来实现-使用定时器QTimer,通过设置超时时间定时更新图标达到旋转效果. 简述 效果 资源 源码 ...

  4. Qt之等待提示框(QPropertyAnimation)

    简述 之前分享过QLabel可以通过QMovie播放gif图片,可以实现等待提示框,今天主要使用动画QPropertyAnimation来进行实现! 数据加载的时候,往往都需要后台线程进行数据请求,而 ...

  5. Qt实现冒泡提示框

    通过QLabel创建类似冒泡方式的提示框(提示框显示位置为父类控件居中位置,具体可根据需要自行修改),鼠标停留提示框界面时查看信息,离开时自动淡化消失的效果: 头文件定义 #ifndef _TTipW ...

  6. Qt之等待提示框三(QLabel进行多图片切换)

    之前分享过的等待提示框有用QMovie播放gif图片实现的,也有纯代码实现的,今天再次分享另一种实现方式,如题目所示:QLabel进行图片的切换!     进行用户登录的时候,往往都需要后台线程进行用 ...

  7. Qt之QProgressIndicator(等待提示框)

    简述 很早以前在网上看到一个纯代码实现的旋转动画感觉效果很不错,分享给大家.不得不说,条条大道通罗马,我们需要更多地创造... 详见:QProgressIndicator 简述 效果 源码 使用 更多 ...

  8. Qt 信息提示框 QMessageBox

    information QMessageBox::information(NULL, "Title","Content",QMessageBox::Yes | ...

  9. QPainterPath 不规则提示框

    currentPosition()是最后一次绘制后的“结束点”(或初始点),使用moveTo()移动currentPosition()而不会添加任何元素. QPainterPath ​合并: 1.方法 ...

随机推荐

  1. SOA之(4)——服务实现的途径

    服务实现的途径(Service Implementation Mediums) 将SOA看成是一个架构模型非常重要,它独立于任何技术平台.对于企业来说,可以根据它当前自身的技术优势来实现SOA,从而达 ...

  2. 怎样在VS2013/MFC中使用TeeChart绘图控件

    TeeChart作为一款强大好用的绘图控件,通过它可以绘制出各式各样的图表,包括2D的,还有3D的,绘制的图表美观实用,这里主要讲述如何在VS2013/MFC中使用TeeChart控件,顺便说一下在V ...

  3. DevExpress GridView 自定义搜索按钮改为中文内容

    首先将 GridControl 控件的搜索功能显示出来. http://www.cnblogs.com/DeepLearing/p/3887601.html 显示效果如下: 可以通过 GridLoca ...

  4. strrchr函数

    C语言函数 函数简介 函数名称: strrchr 函数原型:char *strrchr(char *str, char c); 所属库: string.h 函数功能:查找一个字符c在另一个字符串str ...

  5. node入门开发遇到的问题

    最近在看node入门这本书,https://cnodejs.org/getstart 里面是跟随作者完成一个小的demo,书中不免会有遗漏的,下面是我在实现里面最后一个例子时遇到的问题,希望能够帮助其 ...

  6. Meteor 之 数据的发布于订阅(Publish and subscribe )

    发布和订阅 发布(Publication)和订阅(Subscription)是 Meteor 的最基本最重要的概念之一,但是如果你是刚刚开始接触 Meteor 的话,也是有些难度的. 这已经导致不少误 ...

  7. C难点分析

    1. 形参和实参 调用函数时,写在括号里面的就是实参,函数本身用的就是形参. 2.字符串问题 char a[5]={"abcd"};注意是4个字符,而不是5个  字符串数组后面带  ...

  8. 欧拉工程第55题:Lychrel numbers

    package projecteuler51to60; import java.math.BigInteger; import java.util.Iterator; import java.util ...

  9. JSTL Tag学习笔记之<fn: />

    在JSTL中也提供了一些标准的函数,但是几乎都是和操作字符串相关的函数,如果需要使用这类函数的话,应该引入下面的taglib: <%@ taglib prefix="fn" ...

  10. 关于 RTMP RTMPT RTMPS RTMPE RTMPTE RTMFP AMF 简介

    http://www.360doc.com/content/13/0709/16/21412_298738723.shtml 1. AMFAMF(是Action Message Format的缩写)是 ...