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

/ 25,854评论 / 145693阅读 / 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. Jamesexite说道:

    Generic Cialis price: Generic Cialis price – Generic Cialis price

  2. AlvinDal说道:

    Раскрутка сайтов https://seoshnikigood.ru/ в ТОП в городе Москва. Используем эффективные методы, работаем практически с любым бюджетом. Выгодные условия, индивидуальный подход.

  3. Charlesvox说道:

    https://cenforce.pro/# buy cenforce

  4. Elmersoalf说道:

    Levitra 20 mg for sale levitrav.store Buy Vardenafil online

  5. great post, very informative. I ponder why the
    other specialists of this sector don’t understand this.

    You must proceed your writing. I am confident, you’ve a huge readers’ base already!

  6. Charlesvox说道:

    http://cialist.pro/# Tadalafil Tablet

  7. Elmersoalf说道:

    Kamagra 100mg price buy kamagra online Kamagra Oral Jelly

  8. Elmersoalf说道:

    order viagra Cheapest place to buy Viagra Viagra without a doctor prescription Canada

  9. Elmersoalf说道:

    Buy Cialis online cialist.pro Tadalafil price

  10. Jamesexite说道:

    sildenafil over the counter: Cheapest place to buy Viagra – Sildenafil 100mg price

  11. Jamesexite说道:

    Buy Tadalafil 10mg: buy cialis overseas – Buy Tadalafil 10mg

  12. Georgefrege说道:

    Tadalafil Tablet: Generic Cialis without a doctor prescription – Buy Tadalafil 20mg

  13. Jamesexite说道:

    Purchase Cenforce Online: Purchase Cenforce Online – order cenforce

  14. Elmersoalf说道:

    super kamagra cheap kamagra Kamagra tablets

  15. Charlesvox说道:

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

  16. Jamesexite说道:

    cenforce.pro: Cenforce 150 mg online – Purchase Cenforce Online

  17. address说道:

    Thanks , I have recently been searching for info about this subject
    for a long time and yours is the best I have came upon till now.
    But, what concerning the bottom line? Are you positive
    in regards to the source?

  18. Chongtek说道:

    Купить квартиру в Казани https://novostroyzhilie.ru/ от застройщика. Планировки и цены трехкомнатных, двухкомнатных и однокомнатных квартир в новостройке.

  19. DavidBiolo说道:

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

  20. DavidBiolo说道:

    https://cialist.pro/# Cialis 20mg price in USA

  21. Esenistracupt说道:

    Циклёвка паркета: особенности и этапы услуги
    Циклёвка паркета — это процесс восстановления внешнего вида паркетного пола путём удаления верхнего повреждённого слоя и возвращения ему первоначального вида. Услуга включает в себя несколько этапов:
    Подготовка: перед началом работы необходимо защитить мебель и другие предметы от пыли и грязи, а также удалить плинтусы.
    Шлифовка: с помощью шлифовальной машины удаляется старый лак и верхний повреждённый слой древесины.
    Шпатлёвка: после шлифовки поверхность паркета шпатлюется для заполнения трещин и выравнивания поверхности.
    Грунтовка: перед нанесением лака паркет грунтуется для улучшения адгезии и защиты от плесени и грибка.
    Нанесение лака: лак наносится в несколько слоёв с промежуточной шлифовкой между ними.
    Полировка: после нанесения последнего слоя лака паркет полируется для придания поверхности блеска и гладкости.
    Циклёвка паркета позволяет обновить внешний вид пола, восстановить его структуру и продлить срок службы.
    Сайт: ykladka-parketa.ru
    Циклевка паркета

  22. Georgefrege说道:

    Kamagra 100mg: kamagra – Kamagra 100mg

  23. Charlesvox说道:

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

  24. Elmersoalf说道:

    Cheap Sildenafil 100mg viagra canada Generic Viagra for sale

  25. Jamesexite说道:

    Buy Cenforce 100mg Online: Cenforce 150 mg online – Cenforce 100mg tablets for sale

  26. Charlesvox说道:

    https://kamagra.win/# Kamagra Oral Jelly

  27. Elmersoalf说道:

    Cialis over the counter Generic Tadalafil 20mg price Cialis 20mg price

  28. Elmersoalf说道:

    buy Viagra online viagras.online Viagra online price

发表回复

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