Qt实现类似QQ的登录失败的提示框,主要涉及窗口透明并添加关闭按钮,以及图标和信息的显示等。

直接上代码:

#include "error_widget.h"

ErrorWidget::ErrorWidget(QWidget *parent)
 : QWidget(parent)
{

int width = parent->width();
 this->resize(width, 28);

//设置标题栏隐藏
 this->setWindowFlags(Qt::FramelessWindowHint);

//设置背景色透明
 QPalette palette;
 QColor color(190, 230,
250);
 color.setAlphaF(0.6);
 palette.setBrush(this->backgroundRole(),
color);
 this->setPalette(palette);

//如果这个QWidget直接show,是有背景色的,但是如果放到一个父Widget中时,它就没有了效果。添加如下代码后就可以了:
 this->setAutoFillBackground(true);

//构建关闭按钮

close_button= new QToolButton(this);
 QPixmap close_pix =
style()->standardPixmap(QStyle::SP_TitleBarCloseButton); 
 close_button->setIcon(close_pix);
 close_button->setStyleSheet("QToolButton{background-color:
transparent;}");
 
 //获取主界面的宽度
 int height =
this->height();
 close_button->setGeometry(width-20, 0, 20, 20);

//设置提示图片
 msg_label = new
QLabel(this);
 msg_label->setGeometry(QRect(5, 5, 20,
20));
 msg_label->setStyleSheet("background-color:
transparent;");
 msg_label->setScaledContents(true);

//设置提示信息
 ask_label = new
QLabel(this);
 ask_label->setStyleSheet("background-color: transparent;
color: red;");
 ask_label->setGeometry(QRect(30, 0, width - 60,
height));
 ask_label->setAlignment(Qt::AlignCenter);

close_button->setCursor(Qt::PointingHandCursor);

QObject::connect(close_button, SIGNAL(clicked()), this,
SLOT(closeWidget()));
}

ErrorWidget::~ErrorWidget()
{
 Setting::freePointer(ask_label);
 Setting::freePointer(msg_label);
 Setting::freePointer(close_button);
}

void ErrorWidget::setTipInfo(QString
info)
{
 //设置提示信息
 ask_label->setText(info);
}

void ErrorWidget::setTipIcon(QPixmap
pixmap)
{
 msg_label->setPixmap(pixmap);
}

//关闭按钮主要进行提示框的隐藏

bool ErrorWidget::closeWidget()
{
 this->hide();

return true;
}

实现思路:

QQ效果图:

提示框透明,且包含提示图标,关闭按钮等!

所以自己也可以利用Qt中的QWidget创建一个提示框,在构建的时候设置背景透明,但是进行窗口隐藏,使用hide()(之所以隐藏是因为登录的时候不显示,只有在登录失败的时候才显示,即调用show()),再登录失败之后调用setTipIcon(QPixmap
pixmap)设置图标和setTipInfo(QString info)设置提示信息即可。

//进行错误提示
   QPixmap pixmap =
QPixmap(":/icon/errortip");
   error_widget->setTipIcon(pixmap);
   error_widget->setTipInfo(info);
   if(error_widget->isHidden())
   {
    error_widget->show();
   }

效果图:

字体颜色样式什么的都可以自行设置,主要是实现的思路!愿大家共勉。

http://blog.sina.com.cn/s/blog_a6fb6cc90101az3h.html

qt之透明提示框(模拟qq) (非常漂亮)的更多相关文章

  1. Qt之透明提示框

    简述 经常使用企鹅的小伙伴一定对登录失败的提示框很熟悉,主要涉及窗口透明并添加图标.提示信息.关闭按钮的显示等. 我们可以利用QWidget创建一个提示框,然后通过样式设置我们想要的效果. 简述 效果 ...

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

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

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

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

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

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

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

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

  6. Qt实现冒泡提示框

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

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

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

  8. Android简易实战教程--第二十二话《自定义组合控件模拟qq登录下拉框和其中的一些”小技巧”》

    转载此文章请注明出处:点击打开链接   http://blog.csdn.net/qq_32059827/article/details/52313516 首先,很荣幸此专栏能被CSDN推荐到主页.荣 ...

  9. wpf实现仿qq消息提示框

    原文:wpf实现仿qq消息提示框 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/article/details/5052 ...

随机推荐

  1. 【转载】FPGA静态时序分析——IO口时序

    转自:http://www.cnblogs.com/linjie-swust/archive/2012/03/01/FPGA.html 1.1  概述 在高速系统中FPGA时序约束不止包括内部时钟约束 ...

  2. label swift

    var label = UILabel(frame: CGRectMake(10, 20, 300, 100)) label.text = "<Swift语言实战入门>" ...

  3. Linux C 文件与目录4 将缓冲区数据写入磁盘

    将缓冲区数据写入磁盘 所谓缓冲区,是Linux系统对文件的一种处理方式.在对文件进行写操作时,并没有立即把数据写入到磁盘,而是把数据写入到缓冲区.如果需要把数据立即写入到磁盘,可以使用sync函数.用 ...

  4. mysql 字段编码该为utf8mb4

    alter table c_comment modify column content varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unico ...

  5. 微软职位内部推荐-Senior SDE

    微软近期Open的职位: Position: Senior SDE-- Mobile Products Android/iOS/WP Senior Developer Contact Person: ...

  6. 谈谈 Repository、IUnitOfWork 和 IDbContext 的实践

    谈谈 Repository.IUnitOfWork 和 IDbContext 的实践 上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDbContext ...

  7. 团队项目的NABC(截图软件)

    我们小组要开发的软件是基于windows上的截图软件,其NABC如下. 1.need: 首先,截图工具是几乎每个用户都会用到的,不管是在工作中,还是在学习上,其针对的人群从学生到上班族不等, 所以,他 ...

  8. MySQL 分组

    MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT ...

  9. 【CentOS】IBM X3650M4 IMM远程管理【转载】

    问题描述:          IBM X3650M4 IMM远程开机和关机   参考资料:             http://www.ibmsys.cn/blog/?p=201   问题解决: 一 ...

  10. 版本控制 - SVN/TortoiseSVN

    研读了blog: 1. http://www.open-open.com/lib/view/open1346982569725.html  2. http://www.360doc.com/conte ...