前几天课设做个聊天系统,顺便实现了这个在程序外显示弹幕作为消息提示的功能,这里记录一下怎么搞。
目录
效果
思路
- 创建一个子窗口
- 将子窗口去掉窗口标题栏,设置背景透明
- 在里面放文本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在同一目录下:
- 因此在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("嘿嘿,我的洛天依");
}
}
}
问题
- 这个弹幕会被其他高层次的窗口遮挡,显然问题在于我们创建的窗口不是顶层窗口,这个后面再看看咋整。
average cost of cialis 20mg
reputable indian online pharmacy
valtrex brand cost
australia online pharmacy free shipping
generic tadalafil pills
canada rx pharmacy
lisinopril 30 mg daily
lisinopril 10 mg tablet
http://mexicoph24.life/# mexico drug stores pharmacies
brand synthroid
tadalafil cost canada
cheapest synthroid prices
buying prescription drugs in mexico online: Online Pharmacies in Mexico – п»їbest mexican online pharmacies
azithromycin mexico pharmacy
cheapest online pharmacy india https://indiaph24.store/# reputable indian online pharmacy
indian pharmacy online
mexican online pharmacies prescription drugs: medication from mexico pharmacy – mexican rx online
best india pharmacy https://indiaph24.store/# indianpharmacy com
best online pharmacy india
п»їlegitimate online pharmacies india http://indiaph24.store/# indian pharmacies safe
cheapest online pharmacy india
buy medicines online in india https://indiaph24.store/# indian pharmacy paypal
pharmacy website india
Online medicine home delivery https://indiaph24.store/# indianpharmacy com
indian pharmacy
foreign pharmacy online
where can i buy synthroid online
https://mexicoph24.life/# buying prescription drugs in mexico
payday loan
п»їlegitimate online pharmacies india http://indiaph24.store/# Online medicine home delivery
Online medicine home delivery
maple leaf pharmacy in canada
zithromax
buy medicines online in india http://indiaph24.store/# indian pharmacy paypal
indianpharmacy com
express scripts com pharmacies
medication prednisone
synthroid
metformin cost in india
reputable overseas online pharmacies
tadalafil buy
buy valrex online
buy azithromycin 500mg online uk
zanetvize.com
그런데 그들이 산길을 돌자 갑자기 눈이 번쩍 떠졌다.
Hello, its pleasant piece of writing about media print, we all know media is a wonderful source of
data.
how much is zithromax 250 mg
prednisone otc
lisinopril tabs 20mg
buysteriodsonline.com
병사들은 Zhu Zaimo가 무자비한 것을 보았을 때 Xu Pengju는 격렬하게 울부 짖었습니다.
medicine in mexico pharmacies: mexican pharmacy – buying prescription drugs in mexico
brand cialis canada
canadian pharmacy no rx needed
best rogue online pharmacy
Online medicine order http://indiaph24.store/# indianpharmacy com
pharmacy website india
prednisone without a script
Приветствуем вас, друзья!
Компания XRumer LLC предлагает профессиональные услуги по СЕО продвижению.
Ваш сайт, как можно заметить, еще только начинает набирать обороты. Для того, чтобы по максимуму ускорить процесс его роста, можем предложить услуги по внешней СЕО-оптимизации. Продвижение в поисковых системах – наша работа. В ассортименте имеются надежные и эффективные СЕО-инструменты для специалистов. У нас большой опыт в данном направлении и огромное портфолио успешных проектов – предоставим по вашему запросу.
Сейчас можем предложить скидку на самые актуальные услуги – 10%.
Услуги:
– Трастовые ссылки (нужно всем сайтам) – цена 1500-5000 р
– Размещаем 2500 жирных безанкорных ссылок (полезно любым сайтам) – 3.900 рублей
– Прогон на 110000 сайтов в зоне RU (очень полезно для сайтов) – 2900 руб
– 150 постов в VK про ваш сайт (поможет в рекламе) – 3900 руб
– Размещение статей про ваш сайт на 300 интернет-форумах (мощная раскрутка портала) – 29000 рублей
– СуперПостинг – это прогон на 3 миллиона ресурсов (мощный прогон для вашего сайта) – 39 900 р
– Рассылаем сообщения по сайтам с использованием обратной связи – договорная цена, будет зависеть от объема.
Если появятся вопросы, в любое время обращайтесь. Всегда поможем.
Telgrm: @exrumer
https://XRumer.cc/
Skype: Loves.Ltd
online shopping pharmacy india https://indiaph24.store/# indian pharmacies safe
indian pharmacy