[Qt/qml]程序之外显示的弹幕

/ 27,447评论 / 151287阅读 / 4点赞

前几天课设做个聊天系统,顺便实现了这个在程序外显示弹幕作为消息提示的功能,这里记录一下怎么搞。

效果

思路

实操

import QtQuick 2.3
import QtQuick.Controls 2.5
//窗口
ApplicationWindow  {
    id:root
    property string str: "我的洛天依"  //弹幕文本内容
    width: 300
    height: 40

    flags:  Qt.FramelessWindowHint  //去掉窗口标题栏
    color:"#00000000"   //设置背景透明

    Rectangle {     //使用矩形包裹Text是为了在Text外面可以增加圆角矩形边框效果
        anchors.fill: parent
        border.width: 1     //设置边框
        border.color: "#66ccff"
        color:"#00000000"
        radius: 20          //边框圆角
        clip: true          //超出矩形范围的内容隐藏

        Text {      //弹幕文本
            anchors.fill: parent
            text: str
            font.bold: true
            font.pointSize: 15
            color: "#66ccff"
            style: Text.Outline     //设置文本样式,在字体轮廓加一层styleColor指定的颜色边缘,防止背景导致文本不明显
            styleColor: "#fff"
            horizontalAlignment: Text.AlignHCenter  //居中
            verticalAlignment:   Text.AlignVCenter
            clip: true
        }
    }
}
import QtQuick
import QtQuick.Window 2.3
import QtQuick.Controls 2.5

Window {
    id:mainWin
    width: 700
    height: 500
    visible: true
    title: qsTr("MimicryChat")

    //添加弹幕
    function addBarrage(in_str) {
        var newCom = Qt.createComponent("Barrage.qml");   //创建弹幕窗口
        var newWin = newCom.createObject();
        newWin.x   = 200;
        newWin.y   = Math.random() * 900;   //随机竖直位置
        newWin.str = in_str;   //设置弹幕文本
        newWin.show();         //显示弹幕窗口

        //设置定时控制器
        let timer = Qt.createQmlObject("import QtQuick 2.14; Timer {}", mainWin);
        timer.interval = 20;    //执行间隔时间(单位ms)
        timer.repeat = true;    //重复执行
        timer.triggered.connect(function() {  //执行内容
            if(newWin.x < 1700) {  //如果没到右边缘就移动2个像素点
                newWin.x += 2;
            } else {
                timer.stop();      //到达右边缘,则停止定时控制器,并销毁弹幕
                newWin.close();
            }
        });
        timer.start();   //启动定时器
    }
    Rectangle {   //主窗口背景颜色
        anchors.fill: parent
        color: "#dde8fc"
        radius: 20
    }
    Button {
        width:100
        height: 40
        text:"发送弹幕"
        anchors.bottom: parent.bottom
        anchors.bottomMargin: 10
        //水平居中
        anchors.horizontalCenter: parent.horizontalCenter
        onClicked: {
            addBarrage("嘿嘿,我的洛天依");
        }
    }
}

问题

  1. Elmersoalf说道:

    Tadalafil price Generic Cialis without a doctor prescription Generic Cialis price

  2. Charlesvox说道:

    http://kamagra.win/# sildenafil oral jelly 100mg kamagra

  3. Elmersoalf说道:

    cheapest cialis Cialis 20mg price in USA Buy Tadalafil 5mg

  4. Emperor 33 Slot说道:

    Pretty! This has been an incredibly wonderful article.
    Thank you for providing this information.

  5. Jamesexite说道:

    Generic Tadalafil 20mg price: cialist.pro – cialis for sale

  6. Jamesexite说道:

    buy kamagra online usa: kamagra – Kamagra 100mg price

  7. Jamesexite说道:

    buy kamagra online usa: kamagra pills – buy Kamagra

  8. Charlesvox说道:

    http://viagras.online/# generic sildenafil

  9. Tylerreunk说道:

    https://cenforce.pro/# Cenforce 100mg tablets for sale

  10. Jamesexite说道:

    cheap viagra: Cheapest place to buy Viagra – over the counter sildenafil

  11. Georgefrege说道:

    Kamagra 100mg price: Kamagra 100mg price – Kamagra tablets

  12. Tylerreunk说道:

    https://cenforce.pro/# cenforce for sale

  13. 에그벳슬롯说道:

    sandyterrace.com
    Zhang Heling과 Zhang Yanling은 이번에 이해 했어야했고 눈이 빛났습니다.

  14. Jamesexite说道:

    kamagra: kamagra.win – buy kamagra online usa

  15. Georgefrege说道:

    Cheap Viagra 100mg: Buy generic 100mg Viagra online – Viagra generic over the counter

  16. Elmersoalf说道:

    best price for viagra 100mg Cheap Viagra 100mg Viagra online price

  17. Elmersoalf说道:

    Purchase Cenforce Online Buy Cenforce 100mg Online order cenforce

  18. Tylerreunk说道:

    http://cialist.pro/# cialis for sale

  19. Charlesvox说道:

    https://cenforce.pro/# cheapest cenforce

  20. Elmersoalf说道:

    Viagra Tablet price viagras.online Cheap generic Viagra

  21. DavidBiolo说道:

    https://levitrav.store/# Cheap Levitra online

  22. Charlesvox说道:

    https://levitrav.store/# Levitra 10 mg buy online

  23. Elmersoalf说道:

    Kamagra Oral Jelly Kamagra 100mg price Kamagra 100mg price

  24. Tylerreunk说道:

    http://viagras.online/# Viagra online price

  25. DavidBiolo说道:

    https://viagras.online/# best price for viagra 100mg

  26. 에그벳주소说道:

    sandyterrace.com
    그래, 황무지에 집을 팔아먹는 양심!

  27. Bryanlal说道:

    Добрый день, рад вашему интересу!

    Мы представляем компания по СЕО продвижению XRumer Co.

    Ваш сайт, как можно заметить, еще только начинает набирать обороты. Для того, чтобы ускорить его рост, можем предложить наши услуги по внешней СЕО-оптимизации. У нас имеются доступные и эффективные инструменты для СЕОшников. У нас большой опыт, в арсенале есть успешные рабочие кейсы – предоставим по запросу.

    Прямо сейчас предлагаем скидку на все услуги – 10%.

    Что мы предлагаем:

    – Супер трастовые ссылки (требуется любому сайту) – стоимость от 1,5 до 5000 рублей

    – Жирные безанкорные ссылки (2500 штук) (рекомендуется всем сайтам) – 3900 рублей

    – Профессиональный прогон на 110000 сайтов в зоне RU (очень полезно для сайтов) – 2900 р

    – Опубликуем 150 постов Вконтакте про ваш сайт (недорогая реклама) – 3900 рублей

    – Статьи про ваш сайт на 300 форумах (очень мощная раскрутка интернет-ресурса) – 29000 руб

    – МегаПостинг – это прогон по 3 млн площадок (очень мощный прогон для вашего сайта) – 39 тысяч руб

    – Рассылаем сообщения по сайтам используя форму обратной связи – договорная стоимость, будет зависеть от объема.

    Если появятся вопросы, не стесняйтесь, обращайтесь, подскажем. принимаем usdt
    Telegrm: @exrumer
    Skype: Loves.ltd
    www: https://XRumer.cc

  28. Jamesexite说道:

    Viagra Tablet price: buy Viagra online – generic sildenafil

  29. Jamesexite说道:

    Levitra price: Cheap Levitra online – Levitra tablet price

  30. Jamesexite说道:

    Tadalafil Tablet: Cialis 20mg price in USA – Buy Tadalafil 10mg

  31. Jamesexite说道:

    sildenafil online: Cheapest place to buy Viagra – sildenafil 50 mg price

  32. Elmersoalf说道:

    cheapest cenforce buy cenforce cheapest cenforce

  33. Charlesvox说道:

    https://viagras.online/# sildenafil 50 mg price

  34. Georgefrege说道:

    Viagra online price: viagras.online – Cheap Viagra 100mg

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注