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

/ 50,271评论 / 248855阅读 / 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. Arthurbow说道:

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

    https://diplomans-rossians.com/

  2. Gichardkaf说道:

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

  3. JamesKab说道:

    На этом сайте https://www.rabota-zarabotok.ru/ вы найдете полезную информацию, и отзывы о разных финансовых сайтах. Здесь очень много полезной информации, и разоблачение мошенников. А также узнайте где начать зарабатывать первые деньги в интернете.

  4. Davidfrify说道:

    buy lisinopril 40 mg tablet lisinopril cost us lisinopril 20 mg sale

  5. futa on loli说道:

    This was beautiful Admin. Thank you for your reflections.

  6. jav porn hd说道:

    I do not even understand how I ended up here, but I assumed this publish used to be great

  7. WilliamRen说道:

    http://cytotec.club/# buy cytotec online fast delivery

  8. RandallGuesE说道:

    tamoxifen citrate: tamoxifen for men – tamoxifen cost

  9. RandallGuesE说道:

    purchase cipro: buy cipro online – ciprofloxacin mail online

  10. RandallGuesE说道:

    propecia pill: buy generic propecia without insurance – buying generic propecia without prescription

  11. RandallGuesE说道:

    cipro 500mg best prices: cipro online no prescription in the usa – purchase cipro

  12. Davidfrify说道:

    cost of cheap propecia buy cheap propecia without insurance cheap propecia tablets

  13. Davidfrify说道:

    cost propecia without rx get generic propecia online cost of propecia tablets

  14. WilliamRen说道:

    https://nolvadex.life/# tamoxifen hormone therapy

  15. sandyterrace.com说道:

    tvlore.com
    따라서 일부 미친 사람들은 마차에 30 ~ 40 명을 채웠습니다.

  16. Davidfrify说道:

    buy propecia no prescription buying generic propecia without insurance buying generic propecia without dr prescription

  17. Davidfrify说道:

    zestril 10 mg price in india lisinopril 20 mg canadian zestoretic 20

  18. sandyterrace.com说道:

    tintucnamdinh24h.com
    적나라한 질투는 눈을 충혈시키고 유난히 새빨개지게 만들었다.

  19. Lhaneuncog说道:

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

    https://diploman-rossiya.com

  20. RandallGuesE说道:

    buy misoprostol over the counter: buy cytotec online fast delivery – cytotec abortion pill

  21. RonaldSwobe说道:

    https://cytotec.club/# buy cytotec pills

  22. Davidfrify说道:

    buy cipro online without prescription buy cipro online buy ciprofloxacin

  23. Davidfrify说道:

    ciprofloxacin generic ciprofloxacin order online purchase cipro

  24. WilliamRen说道:

    http://lisinopril.network/# prinivil 10 mg tablet

  25. RandallGuesE说道:

    zestril drug: lisinopril cost 5mg – buy lisinopril 10 mg

  26. RandallGuesE说道:

    cipro ciprofloxacin: ciprofloxacin order online – cipro ciprofloxacin

回复 cheapest tadalafil 5mg 取消回复

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