qt之透明提示框(模拟qq) (非常漂亮)
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) (非常漂亮)的更多相关文章
- Qt之透明提示框
简述 经常使用企鹅的小伙伴一定对登录失败的提示框很熟悉,主要涉及窗口透明并添加图标.提示信息.关闭按钮的显示等. 我们可以利用QWidget创建一个提示框,然后通过样式设置我们想要的效果. 简述 效果 ...
- Qt之等待提示框(QMovie)
简述 关于gif的使用在实际项目中我用的并不多,因为我感觉瑕疵挺多的,很多时候锯齿比较严重,当然与图存在很大的关系. 关于生成gif的方法可以提供一个网站preloaders,基本是可以满足需求的. ...
- Qt之等待提示框(QTimer)
简述 上节讲述了关于QPropertyAnimation实现等待提示框的显示,本节我们使用另外一种方案来实现-使用定时器QTimer,通过设置超时时间定时更新图标达到旋转效果. 简述 效果 资源 源码 ...
- Qt之等待提示框(QPropertyAnimation)
简述 之前分享过QLabel可以通过QMovie播放gif图片,可以实现等待提示框,今天主要使用动画QPropertyAnimation来进行实现! 数据加载的时候,往往都需要后台线程进行数据请求,而 ...
- Qt之等待提示框三(QLabel进行多图片切换)
之前分享过的等待提示框有用QMovie播放gif图片实现的,也有纯代码实现的,今天再次分享另一种实现方式,如题目所示:QLabel进行图片的切换! 进行用户登录的时候,往往都需要后台线程进行用 ...
- Qt实现冒泡提示框
通过QLabel创建类似冒泡方式的提示框(提示框显示位置为父类控件居中位置,具体可根据需要自行修改),鼠标停留提示框界面时查看信息,离开时自动淡化消失的效果: 头文件定义 #ifndef _TTipW ...
- Qt之QProgressIndicator(等待提示框)
简述 很早以前在网上看到一个纯代码实现的旋转动画感觉效果很不错,分享给大家.不得不说,条条大道通罗马,我们需要更多地创造... 详见:QProgressIndicator 简述 效果 源码 使用 更多 ...
- Android简易实战教程--第二十二话《自定义组合控件模拟qq登录下拉框和其中的一些”小技巧”》
转载此文章请注明出处:点击打开链接 http://blog.csdn.net/qq_32059827/article/details/52313516 首先,很荣幸此专栏能被CSDN推荐到主页.荣 ...
- wpf实现仿qq消息提示框
原文:wpf实现仿qq消息提示框 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/article/details/5052 ...
随机推荐
- ABAP自定义类的构造方法
REPORT ytest_011. *----------------------------------------------------------------------* * CLASS z ...
- P1699: [Usaco2007 Jan]Balanced Lineup排队
很明显是一道RMQ问题,倍增法,维护一下区域的最大/小值就行了. var n,i,j,q,f,t,times:longint; hmin,hmax:array[..,..] of longint; f ...
- linux - 自动删除n天前日志
1.删除文件命令: find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 实例命令: find /opt/soft/log/ -m ...
- Daily Scrum2
今天我们小组开会内容分为以下部分: part 1: 之前的失败教训: part 2: 针对Anti-spam and anti-abuse module模块的任务分工: part 3: 之后小组成员必 ...
- JIRA安装过程中链接mysql的问题!
测试下我使用的是mysql7.5的版本,JIRA是6.3.6!这是版本引起的问题! 服务器上原生的mysql驱动jar包:Mysql-connector-java-5.1.18-bin 可参考:htt ...
- loadrunner-增加检查点(web_reg_find)
接口性能测试地址: http://192.168.x.x:x/tionWeb/Ajax_GetStock.aspx?stockcode=600571 性能测试脚本: Action() { lr_sta ...
- this的使用、继承、super
1.this的使用 1)可以用于区分局部变量 Person(int age,string name) { this.age=age; this.name=name; } 2)构造方法中,用this调用 ...
- 【六】PHP正则表达式方法
PHP中正则表达式的声明格式有两种方式,一种是POSIX老版模式,已经不常用.还有一种是其他语言中常见的PCRE方法. 1.正则表达式的匹配方法并返回匹配的项:array preg_grep(stri ...
- 运行时修改TimerTask的执行周期
java.util.TimerTask类的执行周期period变量的声明如下: /** * Period in milliseconds for repeating tasks. A positive ...
- HDU 2529 Shot (物理数学题)
题目 解题过程: //物理数学题 #include<stdio.h> #include<string.h> #include<algorithm> using na ...