最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt實現(xiàn)屏幕底部冒泡效果

 更新時間:2020年08月20日 10:05:32   作者:番茄炒蛋不要蛋  
這篇文章主要為大家詳細介紹了Qt實現(xiàn)屏幕底部冒泡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在Qt局域網(wǎng)聊天程序的到的東西太多了,最想和大家分享的是關(guān)于局域網(wǎng)聊天信息的冒泡,他的設(shè)計也不是特別難,我寫了一個類分享給大家。

可能各位道友有更好的辦法,但希望不要拆臺哦。

該類中有一部分適應(yīng)屏幕分辨率的類,也一并加入。如有不懂的歡迎大家留言。

首先是獲取屏幕分辨率,并實現(xiàn)自適應(yīng)屏幕分辨率。

#ifndef VERDESKTOP_H
#define VERDESKTOP_H
 
#include <QObject>
#include <QDesktopWidget>
 
class VerDesktop : public QObject
{
  Q_OBJECT
public:
  explicit VerDesktop(QObject *parent = 0);
  float getVerDesktop();
 
signals:
 
public slots:
};
 
#endif // VERDESKTOP_H
#include "verdesktop.h"
 
VerDesktop::VerDesktop(QObject *parent) : QObject(parent)
{
}
float VerDesktop::getVerDesktop()
{
  QDesktopWidget dw;
  float ver=float(dw.screenGeometry().width())/float(1920);
  return ver;
}

以下是冒泡的代碼

#ifndef MESSAGEDIALOG_H
#define MESSAGEDIALOG_H
#include <QDialog>
#include <QPropertyAnimation>
#include <QLabel>
#include "verdesktop.h"
#include <QTimer>
#include <QPaintEvent>
#include <QPainter>
 
 
class MessageDialog : public QDialog
{
  Q_OBJECT
public:
  float ver;
  VerDesktop *v;//適應(yīng)屏幕分辨率
  explicit MessageDialog(QWidget *parent=0);
  QLabel *imagelabel;//頭像
  QLabel *namelabel;//名
  void messagedialogseting();//設(shè)置
  QTimer *timer0;
private:
  void paintEvent(QPaintEvent *event);
 
public slots:
  void timerout();
};
 
#endif // MESSAGEDIALOG_H
#include "messagedialog.h"
#include <QApplication>
#include <QDesktopWidget>
#include <QGraphicsDropShadowEffect>
#include <QPalette>
 
MessageDialog::MessageDialog(QWidget *parent):QDialog(parent)
{
  v=new VerDesktop(this);
  ver=v->getVerDesktop();
  messagedialogseting();
  connect(timer0,SIGNAL(timeout()),this,SLOT(timerout()));
}
void MessageDialog::messagedialogseting()//顯現(xiàn)的動畫
{
  QPalette palette(this->palette());
  palette.setColor(QPalette::Background,QColor(49,225,215));
  setPalette(palette);
  setAutoFillBackground(true);
  setWindowFlags(Qt::FramelessWindowHint|windowFlags());
  QRect rect=QApplication::desktop()->availableGeometry();
  setGeometry(rect.width()-250*ver,rect.height()-80*ver,250*ver,80*ver);
  QGraphicsDropShadowEffect *effect=new QGraphicsDropShadowEffect(this);
  effect->setOffset(10,10);
  effect->setBlurRadius(10);
  effect->setColor(QColor(50,50,50));
  this->setGraphicsEffect(effect);
  imagelabel=new QLabel(this);
  namelabel=new QLabel(this);
  imagelabel->setGeometry(5*ver,15*ver,50*ver,50*ver);
  namelabel->setGeometry(90*ver,0,150*ver,80*ver);
  namelabel->setFont(QFont("微軟雅黑",15*ver));
  namelabel->setAlignment(Qt::AlignCenter);
  QPropertyAnimation *animation0=new QPropertyAnimation(this,"geometry");
  animation0->setDuration(500*ver);
  animation0->setStartValue(QRect(rect.width(),rect.height()-80*ver,250*ver,80*ver));//起點
  animation0->setEndValue(QRect(rect.width()-250*ver,rect.height()-80*ver,250*ver,80*ver));//終點
  animation0->start(QAbstractAnimation::DeleteWhenStopped);
  timer0=new QTimer(this);
  timer0->start(1000);
}
void MessageDialog::timerout()//消失的動畫
{
  timer0->stop();
  QPropertyAnimation *animation0=new QPropertyAnimation(this,"windowOpacity");
  animation0->setDuration(500);
  animation0->setStartValue(1);
  animation0->setEndValue(0);
  animation0->start(QAbstractAnimation::DeleteWhenStopped);
  connect(animation0,SIGNAL(finished()),this,SLOT(close()));
}
void MessageDialog::paintEvent(QPaintEvent *event)//做陰影
{
  const int x=3;
  Q_UNUSED(event);
  QPainterPath yinying_path;
  yinying_path.setFillRule(Qt::WindingFill);
  yinying_path.addRect(x,x,this->width()-2*x,this->height()-2*x);
  QPainter painter(this);
  painter.setRenderHint(QPainter::Antialiasing,true);
  QColor color(0,0,0,50);
  for(int i=0;i<x;i++)
  {
    QPainterPath path;
    path.setFillRule(Qt::WindingFill);
    path.addRect(x-i, x-i, this->width()-(x-i)*2, this->height()-(x-i)*2);
    color.setAlpha(150 - sqrt(i)*50);
    painter.setPen(color);
    painter.drawPath(path);
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • C++中異常機制的實現(xiàn)機制詳解

    C++中異常機制的實現(xiàn)機制詳解

    這篇文章主要給大家介紹了關(guān)于C++中異常機制的實現(xiàn)機制的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • C++回溯算法廣度優(yōu)先搜索舉例分析

    C++回溯算法廣度優(yōu)先搜索舉例分析

    回溯在迷宮搜索中使用很常見,就是這條路走不通,然后返回前一個路口,繼續(xù)下一條路?;厮菟惴ㄕf白了就是窮舉法,下面讓我們一起來看看吧
    2022-03-03
  • c++報錯問題解決方案lvalue required as left operand of assignment

    c++報錯問題解決方案lvalue required as left opera

    這篇文章主要介紹了c++報錯:lvalue required as left operand of assignment,出現(xiàn)此錯誤原因,是因為,等號左邊是不可被修改的表達式或常量,而表達式或常量不能作為左值,需要的朋友可以參考下
    2023-01-01
  • C語言實現(xiàn)計算圓周長以及面積

    C語言實現(xiàn)計算圓周長以及面積

    這篇文章主要介紹了C語言實現(xiàn)計算圓周長以及面積方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++ template用法案例詳解

    C++ template用法案例詳解

    這篇文章主要介紹了C++ template用法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 詳解dll動態(tài)庫的開發(fā)與調(diào)用及文件的讀寫小程序

    詳解dll動態(tài)庫的開發(fā)與調(diào)用及文件的讀寫小程序

    這篇文章主要介紹了詳解dll動態(tài)庫的開發(fā)與調(diào)用及文件的讀寫小程序的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • C語言使用posix正則表達式庫的實現(xiàn)

    C語言使用posix正則表達式庫的實現(xiàn)

    在C語言中,你可以使用 POSIX 正則表達式庫(regex.h)來進行正則表達式的模式匹配,本文主要介紹了C語言使用posix正則表達式庫的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • C語言俄羅斯方塊游戲課程設(shè)計

    C語言俄羅斯方塊游戲課程設(shè)計

    這篇文章主要為大家詳細介紹了C語言俄羅斯方塊游戲課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++實現(xiàn)LeetCode(49.群組錯位詞)

    C++實現(xiàn)LeetCode(49.群組錯位詞)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(49.群組錯位詞),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++中一維數(shù)組與指針的關(guān)系詳細總結(jié)

    C++中一維數(shù)組與指針的關(guān)系詳細總結(jié)

    以下是對C++中一維數(shù)組與指針的關(guān)系進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下
    2013-09-09

最新評論

彝良县| 蓝田县| 长白| 蛟河市| 古田县| 涿州市| 湖口县| 威远县| 平利县| 杭锦后旗| 子洲县| 温州市| 徐州市| 高安市| 华安县| 鸡泽县| 盐边县| 苍山县| 邯郸市| 顺昌县| 华宁县| 普安县| 鹤岗市| 浦城县| 开阳县| 航空| 建宁县| 锦屏县| 麻江县| 达尔| 霍州市| 东辽县| 新龙县| 伊通| 陇南市| 泗水县| 西城区| 曲阳县| 家居| 杂多县| 九江市|