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

/ 27,416评论 / 151154阅读 / 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. RandallGuesE说道:

    lisinopril 20 mg no prescription: can i buy lisinopril online – can i buy lisinopril over the counter in mexico

  2. Davidfrify说道:

    ciprofloxacin 500 mg tablet price cipro ciprofloxacin buy cipro online without prescription

  3. StephenDus说道:

    Сегодня, когда диплом становится началом удачной карьеры в любой сфере, многие пытаются найти максимально быстрый и простой путь получения образования. Факт наличия документа об образовании сложно переоценить. Ведь диплом открывает дверь перед людьми, желающими начать профессиональную деятельность или продолжить обучение в любом ВУЗе.
    В данном контексте наша компания предлагает очень быстро получить этот важный документ. Вы можете заказать диплом старого или нового образца, и это будет отличным решением для всех, кто не смог закончить обучение или утратил документ. Все дипломы производятся аккуратно, с максимальным вниманием к мельчайшим элементам, чтобы на выходе получился продукт, 100% соответствующий оригиналу.
    Плюсы данного решения состоят не только в том, что можно оперативно получить свой диплом. Процесс организовывается удобно, с профессиональной поддержкой. Начиная от выбора требуемого образца диплома до консультаций по заполнению личной информации и доставки в любое место страны — все будет находиться под абсолютным контролем квалифицированных специалистов.
    Для тех, кто хочет найти быстрый и простой способ получения необходимого документа, наша компания предлагает отличное решение. Купить диплом – это значит избежать продолжительного процесса обучения и не теряя времени переходить к достижению собственных целей, будь то поступление в ВУЗ или начало профессиональной карьеры.

    https://diploman-rossiya.com

  4. RandallGuesE说道:

    buy ciprofloxacin over the counter: buy cipro cheap – buy ciprofloxacin over the counter

  5. WilliamRen说道:

    https://ciprofloxacin.tech/# buy cipro online without prescription

  6. 303 slot online说道:

    Yes! Finally someone writes about layar 303 slot.

  7. Davidfrify说道:

    lisinopril oral lisinopril online purchase lisinopril mexico

  8. RonaldSwobe说道:

    http://cytotec.club/# Abortion pills online

  9. WilliamRen说道:

    https://nolvadex.life/# tamoxifen and antidepressants

  10. RonaldSwobe说道:

    http://finasteride.store/# buy generic propecia without a prescription

  11. RandallGuesE说道:

    get cheap propecia without insurance: buy propecia without rx – get propecia without insurance

  12. Davidfrify说道:

    where can i buy zestril cost of lisinopril 10 mg lisinopril 40 mg generic

  13. drama önerileri说道:

    Yazdığınız yazıdaki bilgiler altın değerinde çok teşekkürler bi kenara not aldım.

  14. Davidfrify说道:

    home cost of propecia no prescription cost generic propecia without dr prescription

  15. Davidfrify说道:

    buy cytotec in usa buy cytotec pills buy cytotec online

  16. OLaneuncog说道:

    В современном мире, где диплом – это начало отличной карьеры в любой области, многие пытаются найти максимально быстрый и простой путь получения качественного образования. Необходимость наличия официального документа об образовании переоценить невозможно. Ведь именно диплом открывает двери перед людьми, стремящимися вступить в профессиональное сообщество или учиться в ВУЗе.
    В данном контексте наша компания предлагает максимально быстро получить этот важный документ. Вы сможете купить диплом, что становится отличным решением для всех, кто не смог закончить обучение или утратил документ. дипломы выпускаются аккуратно, с особым вниманием к мельчайшим деталям. В результате вы сможете получить документ, полностью соответствующий оригиналу.
    Превосходство данного подхода заключается не только в том, что вы сможете максимально быстро получить свой диплом. Процесс организовывается комфортно, с нашей поддержкой. От выбора необходимого образца документа до консультации по заполнению личной информации и доставки в любое место страны — все под абсолютным контролем квалифицированных специалистов.
    Всем, кто пытается найти оперативный способ получения требуемого документа, наша компания может предложить выгодное решение. Заказать диплом – значит избежать долгого процесса обучения и сразу перейти к личным целям: к поступлению в ВУЗ или к началу удачной карьеры.

    https://diplomanc-russia24.com

  17. Davidfrify说道:

    lisinopril 10 mg online no prescription how to order lisinopril online lisinopril 10 mg online no prescription

  18. WilliamRen说道:

    http://ciprofloxacin.tech/# cipro 500mg best prices

  19. RandallGuesE说道:

    buy cytotec pills online cheap: buy cytotec over the counter – buy cytotec in usa

  20. RandallGuesE说道:

    cost generic propecia pills: buying generic propecia pills – get generic propecia without a prescription

  21. RandallGuesE说道:

    zestoretic coupon: zestril no prescription – cost of lisinopril 2.5 mg

  22. Davidfrify说道:

    cipro pharmacy buy cipro cheap ciprofloxacin over the counter

  23. RandallGuesE说道:

    tamoxifen rash pictures: tamoxifen and weight loss – tamoxifen alternatives

  24. WilliamRen说道:

    https://lisinopril.network/# cost of lisinopril

  25. WilliamRen说道:

    https://lisinopril.network/# lisinopril 20 mg price in india

发表回复

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