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

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

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

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

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

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

首先是獲取屏幕分辨率,并實(shí)現(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)的動(dòng)畫
{
  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));//起點(diǎn)
  animation0->setEndValue(QRect(rect.width()-250*ver,rect.height()-80*ver,250*ver,80*ver));//終點(diǎn)
  animation0->start(QAbstractAnimation::DeleteWhenStopped);
  timer0=new QTimer(this);
  timer0->start(1000);
}
void MessageDialog::timerout()//消失的動(dòng)畫
{
  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);
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

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

    回溯在迷宮搜索中使用很常見,就是這條路走不通,然后返回前一個(gè)路口,繼續(xù)下一條路。回溯算法說(shuō)白了就是窮舉法,下面讓我們一起來(lái)看看吧
    2022-03-03
  • c++報(bào)錯(cuò)問(wèn)題解決方案lvalue required as left operand of assignment

    c++報(bào)錯(cuò)問(wèn)題解決方案lvalue required as left opera

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

    C語(yǔ)言實(shí)現(xiàn)計(jì)算圓周長(zhǎng)以及面積

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

    C++ template用法案例詳解

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

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

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

    C語(yǔ)言使用posix正則表達(dá)式庫(kù)的實(shí)現(xiàn)

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

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

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

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

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

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

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

最新評(píng)論

平山县| 鲜城| 澎湖县| 宣汉县| 蓬安县| 留坝县| 维西| 娄烦县| 临朐县| 长丰县| 库伦旗| 阳高县| 留坝县| 遂川县| 华安县| 华亭县| 镇原县| 呼图壁县| 漳州市| 武义县| 大安市| 岐山县| 雷山县| 永福县| 廊坊市| 鲁山县| 怀远县| 兴义市| 白城市| 东源县| 伊宁县| 射阳县| 漾濞| 西平县| 板桥市| 将乐县| 香河县| 石台县| 德格县| 琼中| 绥阳县|