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();
   }

 

效果图:


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


注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值