Qt之透明提示框(模拟QQ)

7fgame 贡献于2015-09-23

作者 胡晨之  创建于2015-07-30 09:09:00   修改者胡晨之  修改于2015-07-30 09:10:00字数1999

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

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();    }   效果图:

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档