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. 基于BaseAdapter的GridView设置ImageView大小

    基于BaseAdapter的GridView设置ImageView大小 网上找了好多,都是基于SimpleAdapter的,本身在Item.xml中就对ImageView设置了id,而基于BaseAd ...

  2. Java 7 中 NIO.2 的使用——第一节 Path 类的使用

    路径隶属于文件系统,实际上它是存储和组织媒体文件的格式,通常在一块或多块硬盘设备上,以便于非常容易地检索.文件系统可以通过  java.nio.file.FileSystems 这个final 类来访 ...

  3. 图片上传前的预览(PHP)

    1.先创建一个file表单域,我们需要用它来浏览本地文件.<form name="form1" id="form1" method="post& ...

  4. 【Android】cocos2d-x-3.1.1环境搭建与创建工程( Win7 32位系统)

    参考资料: http://blog.csdn.net/wxc237786026/article/details/32907079 1.环境搭建 2.创建工程 2.1 VS2012运行 2.2 Andr ...

  5. 【BZOJ】【1025】【SCOI2009】游戏

    DP/整数拆分 整个映射关系可以分解成几个循环(置换群的预备知识?),那么总行数就等于各个循环长度的最小公倍数+1(因为有个第一行的1~N).那么有多少种可能的排数就等于问有多少种可能的最小公倍数. ...

  6. cf 61E. Enemy is weak 树状数组求逆序数(WA) 分类: Brush Mode 2014-10-19 15:16 104人阅读 评论(0) 收藏

    #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> ...

  7. 重启nginx后丢失nginx.pid解决

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

  8. UML建模类型(转载)

    区分UML模型, UML建模用于不同类型的不同的图.有三个重要类型的UML建模: 结构建模: 系统结构建模捕捉静态功能.它们包括下列各项: 类图 对象图 部署图 包图 复合结构图 组件图 结构模型代表 ...

  9. asp.net各种类型视频播放代码(全)

    1.avi格式 代码片断如下: <object id="video" width="400" height="200" border= ...

  10. VSync Count 垂直同步

    原地址:http://blog.csdn.net/yesy10/article/details/7794556 Unity3D中新建一个场景空的时候,帧速率(FPS总是很低),大概在60~70之间.一 ...