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

/ 26,174评论 / 146908阅读 / 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. Shaneuncog说道:

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

  2. Davidfrify说道:

    Misoprostol 200 mg buy online buy cytotec in usa buy cytotec over the counter

  3. Davidfrify说道:

    buy cytotec pills online cheap buy cytotec in usa buy cytotec in usa

  4. WilliamRen说道:

    https://nolvadex.life/# tamoxifen men

  5. Davidfrify说道:

    lisinopril 10 mg best price lisinopril without prescription lisinopril 20 mg brand name

  6. RandallGuesE说道:

    cytotec buy online usa: cytotec pills buy online – cytotec online

  7. RonaldSwobe说道:

    https://ciprofloxacin.tech/# buy cipro cheap

  8. Davidfrify说道:

    order propecia pills cost of cheap propecia without insurance propecia without a prescription

  9. WilliamRen说道:

    https://finasteride.store/# propecia without a prescription

  10. Davidfrify说道:

    where can i buy cipro online antibiotics cipro purchase cipro

  11. WilliamRen说道:

    http://ciprofloxacin.tech/# ciprofloxacin 500mg buy online

  12. RandallGuesE说道:

    lisinopril medication generic: lisinopril 10 mg for sale – lisinopril 49 mg

  13. Davidfrify说道:

    Cytotec 200mcg price cytotec online order cytotec online

  14. RandallGuesE说道:

    tamoxifen menopause: nolvadex online – dcis tamoxifen

  15. RandallGuesE说道:

    ciprofloxacin generic price: ciprofloxacin mail online – buy cipro

  16. Michaelsew说道:

    https://indiaph24.store/# online pharmacy india

  17. RickyAlage说道:

    india online pharmacy buy medicines from India best online pharmacy india

  18. Pedropaite说道:

    medication from mexico pharmacy: mexico pharmacy – purple pharmacy mexico price list

  19. Marcelcrolf说道:

    https://indiaph24.store/# india online pharmacy

  20. RickyAlage说道:

    medication from mexico pharmacy mexican pharmacy mexican pharmaceuticals online

  21. Marcelcrolf说道:

    http://canadaph24.pro/# canadian pharmacy price checker

  22. RickyAlage说道:

    medication from mexico pharmacy medication from mexico pharmacy mexican mail order pharmacies

  23. Marcelcrolf说道:

    https://canadaph24.pro/# northern pharmacy canada

  24. RickyAlage说道:

    top online pharmacy india Cheapest online pharmacy Online medicine order

  25. Marcelcrolf说道:

    http://mexicoph24.life/# mexico drug stores pharmacies

  26. RickyAlage说道:

    mexican pharmacy mexico pharmacy purple pharmacy mexico price list

  27. StevenSen说道:

    canadian family pharmacy: Licensed Canadian Pharmacy – canada cloud pharmacy

  28. Marcelcrolf说道:

    https://canadaph24.pro/# online canadian pharmacy reviews

回复 synthroid medication online 取消回复

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