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

/ 44,184评论 / 216781阅读 / 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. Yrefmgr说道:

    Привет, друзья!
    Купить диплом любого университета.
    tyachiv.ukraine7.com/login
    Успешной учебы!

  2. Jamesjer说道:

    cipro ciprofloxacin: buy cipro without rx – buy cipro online without prescription

  3. Yrefzhl说道:

    Привет!
    Купить диплом университета.
    deviva.ru/viewtopic.php?id=8664#p61513
    Удачи!

  4. BomesMix说道:

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

  5. Dnrtypu说道:

    Привет!
    Купить документ ВУЗа можно в нашем сервисе.
    asxdiplomik24.ru/kupit-diplom-o-srednem-obrazovanii
    Хорошей учебы!

  6. 博彩社区说道:

    Good write-up. I definitely appreciate this website. Keep it up!

  7. Diplomi_nbol说道:

    Добрый день!
    Приобрести документ о получении высшего образования вы сможете у нас.
    diplomyx.com/kupit-diplom-perm 

  8. Lariorglq说道:

    Вопросы и ответы: можно ли быстро купить диплом старого образца?
    diplomasx.com/kupit-diplom-moskva

  9. Xazrzvg说道:

    Привет, друзья!
    Официальная покупка школьного аттестата с упрощенным обучением в Москве
    arusak-diploms-srednee.ru/svidetelstvo-o-brake В 

  10. Lazrxxa说道:

    Добрый день!
    Мы изготавливаем дипломы любой профессии по приятным тарифам.
    newmanstrength.com/диплом-проведенный-купить/

  11. BomesMix说道:

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

  12. Manrdea说道:

    Добрый день!
    Приобрести документ о получении высшего образования
    diplomyx24.ru/kupit-diplom-sankt-peterburg

  13. Jamesjer说道:

    paxlovid covid: Paxlovid over the counter – paxlovid cost without insurance

  14. Jamesjer说道:

    п»їpaxlovid: paxlovid buy – п»їpaxlovid

  15. Lazrkcy说道:

    Здравствуйте!
    Мы можем предложить дипломы психологов, юристов, экономистов и других профессий по приятным тарифам.
    laboghrissi.com/купить-диплом-мгта-или-любого-вуза-рос/

  16. Sazrlty说道:

    Здравствуйте!
    Мы можем предложить дипломы любой профессии по доступным ценам. Цена будет зависеть от выбранной специальности, года получения и университета. Всегда стараемся поддерживать для клиентов адекватную политику цен. Для нас очень важно, чтобы документы были доступными для большого количества наших граждан.
    myworldavto.ru/diplom-na-zakaz-vash-shans-izmenit-svoyu-zhizn

  17. Rosaline Carrizo说道:

    This is a topic that’s close to my heart… Take care! Where can I find the contact details for questions?

  18. Dnrttyh说道:

    Добрый день!
    Заказать документ о получении высшего образования вы сможете у нас.
    diplomasx.com/kupit-diplom-moskva
    Хорошей учебы!

  19. Uazrvjt说道:

    Привет, друзья!
    Где заказать диплом специалиста?
    my.omsystem.com/members/anthonyjoseph

  20. Jamesjer说道:

    buy doxycycline 100mg capsules online: cheapest 40 mg doxycycline – how to buy doxycycline without a prescription

  21. BomesMix说道:

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

  22. Jamesjer说道:

    buy cipro online canada: buy cipro – cipro

  23. Jamesjer说道:

    where can i buy cipro online: ciprofloxacin generic price – buy ciprofloxacin over the counter

  24. Diplomi_uwol说道:

    Привет, друзья!
    Заказать документ о получении высшего образования можно у нас в столице.
    ast-diplom.com/kupit-diplom-novosibirsk 

  25. Lazrcpa说道:

    Привет, друзья!
    Заказать диплом ВУЗа.
    flerus-shop.hcp.dilhost.ru/club/user/3/forum/message/861/857/

  26. Lazragk说道:

    Привет!
    Приобрести диплом о высшем образовании.
    lada-clubs.ru/gallery/image/733-kak-podobrat-proverennyy-magazin-s-bolshim-vyborom-diplomov/

  27. Jamesjer说道:

    can you buy amoxicillin uk: generic amoxicillin – buy amoxicillin

  28. Roberthearp说道:

    купить квартиру в новостройке недорого https://kvartiru-kupit43.ru

  29. GregorySal说道:

    https://indibeti.in is a premier online casino offering a wide array of games including slots, table games, and live dealer options. Renowned for its user-friendly interface and robust security measures, Indibet ensures a top-notch gaming experience with exciting bonuses and 24/7 customer support.

  30. Terryanoff说道:

    купить 2 комнатную квартиру в новостройке купить квартиру в новостройке с ремонтом

  31. Timothyzicle说道:

    купить квартиру в новостройке недорого https://kvartira-new43.ru

  32. BomesMix说道:

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

  33. Treftjq说道:

    Привет!
    Можно ли быстро купить диплом старого образца и в чем подвох?
    http://www.imdb.com/list/ls547814563/?ref_=lsedt_ov
    Всегда вам поможем!.

  34. Lazrjgg说道:

    Добрый день!
    Мы готовы предложить дипломы любой профессии по приятным ценам.
    amengram.com/blogs/235/ упите-?ипломы-Ѕыстро-и-Ќадежно

  35. Dnrtibl说道:

    Здравствуйте!
    Заказать документ ВУЗа можно в нашей компании.
    ast-diplom24.ru/kupit-diplom-voronezh
    Успехов в учебе!

  36. Dnrtfed说道:

    Привет!
    Купить документ о получении высшего образования вы сможете в нашей компании.
    diploms-x24.ru/kupit-diplom-voronezh
    Успехов в учебе!

  37. Trefcmw说道:

    Привет!
    Официальная покупка диплома вуза с упрощенной программой обучения
    vk.com/prymechatel?w=wall-147947644_398
    Окажем помощь!.

  38. Diplomi_wvol说道:

    Привет, друзья!
    Заказать документ университета можно в нашей компании.
    diplomasx.com/kupit-diplom-s-registraciej 

  39. Diplomi_zcol说道:

    Привет, друзья!
    Купить документ о получении высшего образования можно у нас в столице.
    asxdiplomik.com/kupit-diplom-kazan 

  40. Lazrrby说道:

    Привет, друзья!
    Заказать диплом о высшем образовании.
    ls.co-x.ru/2024/07/04/kak-nayti-nadezhnyy-onlayn-magazin-s-obshirnym-assortimentom-diplomov.html

  41. see this page说道:

    Everything is very open with a very clear description of the challenges. It was truly informative. Your website is very helpful. Many thanks for sharing!

  42. Lariorvhz说道:

    Можно ли купить аттестат о среднем образовании, основные моменты и вопросы
    ast-diplomas.com/otzyvy

  43. BomesMix说道:

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

  44. Lazrqtw说道:

    Добрый день!
    Мы изготавливаем дипломы любой профессии по приятным ценам.
    http://www.globalcorp.it/купить-диплом-мгудт-или-любого-вуза-ро/

  45. Danrinq说道:

    Добрый день!
    Мы предлагаем дипломы любой профессии.
    http://www.fonfachpropiedades.cl/2024/07/12/диплом-магистра-2010-2013-фото/
    Окажем помощь!.

  46. Sazrwue说道:

    Здравствуйте!
    Мы готовы предложить дипломы любой профессии по приятным ценам. Стоимость будет зависеть от той или иной специальности, года выпуска и образовательного учреждения. Стараемся поддерживать для заказчиков адекватную ценовую политику. Для нас важно, чтобы дипломы были доступными для подавляющей массы наших граждан.
    bookmark-nation.com/story17073977/купить-диплом-о-высшем-цена

  47. Yrefgaf说道:

    Здравствуйте!
    Заказать диплом университета.
    bl.com.tw/index.php?title=??????_??????:_???_??????_???_?_?????_?????_?_?????????????????_?????????!
    Удачи!

发表回复

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