前几天课设做个聊天系统,顺便实现了这个在程序外显示弹幕作为消息提示的功能,这里记录一下怎么搞。
目录
效果
![](https://blog.coolight.cool/wp-content/uploads/2022/06/barrage.gif)
思路
- 创建一个子窗口
- 将子窗口去掉窗口标题栏,设置背景透明
- 在里面放文本Text
- 设置定时器控制子窗口从左到右移动,移动到右边缘时销毁子窗口
实操
- 新建qml文件,这里示例 Barrage.qml
- 里面写入:
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
}
}
}
- 在需要调用的qml文件中,导入并按如下操作使用:
- 由于Barrage.qml和main.qml在同一目录下:
![](https://blog.coolight.cool/wp-content/uploads/2022/06/image-43.png)
- 因此在main.qml中可以直接使用Barrage.qml
- 以下是 main.qml 的内容
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("嘿嘿,我的洛天依");
}
}
}
问题
- 这个弹幕会被其他高层次的窗口遮挡,显然问题在于我们创建的窗口不是顶层窗口,这个后面再看看咋整。
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.
оборудование для актовых залов оборудование для актовых залов .
Привет!
Мы предлагаем дипломы любой профессии по приятным ценам.
allnewstroy.ru/diplomyi-s-polnyim-paketom-dokumentov
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.
Здравствуйте!
Приобрести документ института вы можете в нашем сервисе.
ast-diplomas24.ru/kupit-diplom-krasnoyarsk
Успехов в учебе!
clomid capsules
Добрый день!
Легальная покупка диплома о среднем образовании в Москве и регионах
itbitgroup.ru/legkiy-sposob-priobresti-diplom-onlayn
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
Thank you for great article. Hello Administ .Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
Здравствуйте!
Приобрести диплом о высшем образовании.
anamaliya.ru/otzyvy/shirokiy-assortiment-dokumentov-v-populyarnom-onlayn-magazine
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.
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.
Добрый день!
Купить документ о получении высшего образования вы можете в нашей компании.
ast-diploms24.ru/kupit-diplom-o-srednem-obrazovanii
Успехов в учебе!
Привет, друзья!
Мы готовы предложить дипломы любых профессий по приятным тарифам.
blackmastercomic.com/blog/2024/06/22/диплом-в-три-клика/
Здравствуйте!
Где купить диплом по необходимой специальности?
http://www.leenkup.com/read-blog/15756
I have read so many posts concerning the blogger lovers but this post is
actually a pleasant piece of writing, keep it up.
Здравствуйте!
Заказать документ университета можно у нас в Москве.
ast-diplomy.com/kupit-diplom-o-vysshem-obrazovanii
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.
Здравствуйте!
Приобрести документ о получении высшего образования можно в нашем сервисе. Мы предлагаем документы об окончании любых ВУЗов России. Вы получите необходимый диплом по любой специальности, любого года выпуска, включая документы образца СССР. Даем 100% гарантию, что в случае проверки документов работодателем, никаких подозрений не возникнет.
Мы изготавливаем дипломы психологов, юристов, экономистов и прочих профессий по приятным ценам. Стоимость будет зависеть от конкретной специальности, года получения и образовательного учреждения. Стараемся поддерживать для заказчиков адекватную ценовую политику. Для нас очень важно, чтобы дипломы были доступными для подавляющей массы граждан.
mevajafeke.huicopper.com/s-legkostu-pokupaem-attestat-v-lucsem-magazine-russian-diplom
Окажем помощь!
световое оборудование для актового зала световое оборудование для актового зала .
Pretty! This was an incredibly wonderful post. Thanks for providing these details.
Здравствуйте!
Мы готовы предложить дипломы любой профессии по приятным тарифам.
opengadjet.ru/diplomyi-ot-vedushhih-vuzov
Здравствуйте!
Официальная покупка школьного аттестата с упрощенным обучением в Москве
arusak-diploms-srednee.ru/kupit-diplom-sssr В
Привет, друзья!
Заказать документ ВУЗа вы сможете в нашем сервисе.
ast-diploms.com/kupit-diplom-magistra
Удачи!
оборудование для сцены актового зала оборудование для сцены актового зала .
Добрый день!
Заказать документ о получении высшего образования
ast-diplomas24.ru/kupit-diplom-o-srednem-obrazovanii
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.
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.
видеостена купить видеостена купить .
Здравствуйте!
Как оказалось, купить диплом кандидата наук не так уж и сложно
hi-fi-forum.net/profile/957272
Рады оказать помощь!.
Здравствуйте!
Приобрести диплом ВУЗа.
alex-neil.ru/index.php/cb-profile/pluginclass/cbblogs?action=blogs&func=show&id=239