zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Go 模板
    使用Go开发web服务器
    CLI:使用Go开发命令行应用
    MyBatis 注解使用动态SQL
    Tomcat 使用Redis存储Session
    [翻译] java NIO Buffer
    [翻译] java NIO Channel
    [翻译]java nio 概述
    [翻译] java NIO 教程---介绍
    接口的定义常量与使用
  • 原文地址:https://www.cnblogs.com/findumars/p/6009827.html
Copyright © 2011-2022 走看看