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

/ 34,392评论 / 179631阅读 / 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. BomesMix说道:

    Lorem Ipsum has been the industry’s standard dummy text https://excellenceevents.in/czthb of type and scrambled it to make a type specimen book.

  2. Lazrhdj说道:

    Привет!
    Мы предлагаем дипломы любой профессии по приятным ценам.
    allnewstroy.ru/diplomyi-s-polnyim-paketom-dokumentov

  3. BomesMix说道:

    Lorem Ipsum has been the industry’s standard dummy text https://theofficemakers.in/yyxhn of type and scrambled it to make a type specimen book.

  4. Dnrtadv说道:

    Здравствуйте!
    Приобрести документ института вы можете в нашем сервисе.
    ast-diplomas24.ru/kupit-diplom-krasnoyarsk
    Успехов в учебе!

  5. Mazrydm说道:

    Добрый день!
    Легальная покупка диплома о среднем образовании в Москве и регионах
    itbitgroup.ru/legkiy-sposob-priobresti-diplom-onlayn

  6. Onwin说道:

    Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut

  7. Onwin说道:

    Thank you for great article. Hello Administ .Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut

  8. Lazrwkh说道:

    Здравствуйте!
    Приобрести диплом о высшем образовании.
    anamaliya.ru/otzyvy/shirokiy-assortiment-dokumentov-v-populyarnom-onlayn-magazine

  9. washi tape说道:

    You’ve made some decent points there. I checked on the web for additional information about the issue and found most people will go along with your views on this web site.

  10. BomesMix说道:

    Lorem Ipsum has been the industry’s standard dummy text https://befitjusteat.pl/gfybl of type and scrambled it to make a type specimen book.

  11. Dnrtmcx说道:

    Добрый день!
    Купить документ о получении высшего образования вы можете в нашей компании.
    ast-diploms24.ru/kupit-diplom-o-srednem-obrazovanii
    Успехов в учебе!

  12. Lazrhmn说道:

    Привет, друзья!
    Мы готовы предложить дипломы любых профессий по приятным тарифам.
    blackmastercomic.com/blog/2024/06/22/диплом-в-три-клика/

  13. Uazrzml说道:

    Здравствуйте!
    Где купить диплом по необходимой специальности?
    http://www.leenkup.com/read-blog/15756

  14. yolo app说道:

    I have read so many posts concerning the blogger lovers but this post is
    actually a pleasant piece of writing, keep it up.

  15. Diplomi_ksol说道:

    Здравствуйте!
    Заказать документ университета можно у нас в Москве.
    ast-diplomy.com/kupit-diplom-o-vysshem-obrazovanii 

  16. BomesMix说道:

    Lorem Ipsum has been the industry’s standard dummy text https://zuzannaandrzejewska.pl/baxnpun of type and scrambled it to make a type specimen book.

  17. Mazryoa说道:

    Здравствуйте!
    Приобрести документ о получении высшего образования можно в нашем сервисе. Мы предлагаем документы об окончании любых ВУЗов России. Вы получите необходимый диплом по любой специальности, любого года выпуска, включая документы образца СССР. Даем 100% гарантию, что в случае проверки документов работодателем, никаких подозрений не возникнет.
    Мы изготавливаем дипломы психологов, юристов, экономистов и прочих профессий по приятным ценам. Стоимость будет зависеть от конкретной специальности, года получения и образовательного учреждения. Стараемся поддерживать для заказчиков адекватную ценовую политику. Для нас очень важно, чтобы дипломы были доступными для подавляющей массы граждан.
    mevajafeke.huicopper.com/s-legkostu-pokupaem-attestat-v-lucsem-magazine-russian-diplom
    Окажем помощь!

  18. sex说道:

    Pretty! This was an incredibly wonderful post. Thanks for providing these details.

  19. Lazrhiq说道:

    Здравствуйте!
    Мы готовы предложить дипломы любой профессии по приятным тарифам.
    opengadjet.ru/diplomyi-ot-vedushhih-vuzov

  20. Xazrhwp说道:

    Здравствуйте!
    Официальная покупка школьного аттестата с упрощенным обучением в Москве
    arusak-diploms-srednee.ru/kupit-diplom-sssr В 

  21. Dnrthdw说道:

    Привет, друзья!
    Заказать документ ВУЗа вы сможете в нашем сервисе.
    ast-diploms.com/kupit-diplom-magistra
    Удачи!

  22. Manrpxq说道:

    Добрый день!
    Заказать документ о получении высшего образования
    ast-diplomas24.ru/kupit-diplom-o-srednem-obrazovanii

  23. BomesMix说道:

    Lorem Ipsum has been the industry’s standard dummy text https://carolinaisasi.es/qrboeha of type and scrambled it to make a type specimen book.

  24. this site说道:

    I was very pleased to find this web site. I want to to thank you for ones time for this particularly wonderful read!! I definitely enjoyed every little bit of it and i also have you book marked to look at new stuff in your blog.

  25. Trefglm说道:

    Здравствуйте!
    Как оказалось, купить диплом кандидата наук не так уж и сложно
    hi-fi-forum.net/profile/957272
    Рады оказать помощь!.

  26. Uazrpsd说道:

    Здравствуйте!
    Приобрести диплом ВУЗа.
    alex-neil.ru/index.php/cb-profile/pluginclass/cbblogs?action=blogs&func=show&id=239

发表回复

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