前几天课设做个聊天系统,顺便实现了这个在程序外显示弹幕作为消息提示的功能,这里记录一下怎么搞。
目录
效果
思路
- 创建一个子窗口
- 将子窗口去掉窗口标题栏,设置背景透明
- 在里面放文本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("嘿嘿,我的洛天依");
}
}
}
问题
- 这个弹幕会被其他高层次的窗口遮挡,显然问题在于我们创建的窗口不是顶层窗口,这个后面再看看咋整。
Tadalafil price Generic Cialis without a doctor prescription Generic Cialis price
http://kamagra.win/# sildenafil oral jelly 100mg kamagra
10mg tadalafil
lisinopril without rx
where can i buy valtrex in uk
cheapest cialis Cialis 20mg price in USA Buy Tadalafil 5mg
Pretty! This has been an incredibly wonderful article.
Thank you for providing this information.
Generic Tadalafil 20mg price: cialist.pro – cialis for sale
buy kamagra online usa: kamagra – Kamagra 100mg price
buy kamagra online usa: kamagra pills – buy Kamagra
http://viagras.online/# generic sildenafil
https://cenforce.pro/# Cenforce 100mg tablets for sale
cheap viagra: Cheapest place to buy Viagra – over the counter sildenafil
buy metformin canada
drug lisinopril
Kamagra 100mg price: Kamagra 100mg price – Kamagra tablets
tadalafil over the counter uk
cialis pro
valtrex 500mg cost
prednisone 10 mg order online
https://cenforce.pro/# cenforce for sale
sandyterrace.com
Zhang Heling과 Zhang Yanling은 이번에 이해 했어야했고 눈이 빛났습니다.
kamagra: kamagra.win – buy kamagra online usa
Cheap Viagra 100mg: Buy generic 100mg Viagra online – Viagra generic over the counter
best price for viagra 100mg Cheap Viagra 100mg Viagra online price
Purchase Cenforce Online Buy Cenforce 100mg Online order cenforce
generic valtrex price comparison
http://cialist.pro/# cialis for sale
https://cenforce.pro/# cheapest cenforce
Viagra Tablet price viagras.online Cheap generic Viagra
https://levitrav.store/# Cheap Levitra online
where to get cheap valtrex
https://levitrav.store/# Levitra 10 mg buy online
canada pharmacy online
synthroid buy
Kamagra Oral Jelly Kamagra 100mg price Kamagra 100mg price
http://viagras.online/# Viagra online price
https://viagras.online/# best price for viagra 100mg
tadalafil capsules 7mg
prednisone 10mg online
sandyterrace.com
그래, 황무지에 집을 팔아먹는 양심!
Добрый день, рад вашему интересу!
Мы представляем компания по СЕО продвижению XRumer Co.
Ваш сайт, как можно заметить, еще только начинает набирать обороты. Для того, чтобы ускорить его рост, можем предложить наши услуги по внешней СЕО-оптимизации. У нас имеются доступные и эффективные инструменты для СЕОшников. У нас большой опыт, в арсенале есть успешные рабочие кейсы – предоставим по запросу.
Прямо сейчас предлагаем скидку на все услуги – 10%.
Что мы предлагаем:
– Супер трастовые ссылки (требуется любому сайту) – стоимость от 1,5 до 5000 рублей
– Жирные безанкорные ссылки (2500 штук) (рекомендуется всем сайтам) – 3900 рублей
– Профессиональный прогон на 110000 сайтов в зоне RU (очень полезно для сайтов) – 2900 р
– Опубликуем 150 постов Вконтакте про ваш сайт (недорогая реклама) – 3900 рублей
– Статьи про ваш сайт на 300 форумах (очень мощная раскрутка интернет-ресурса) – 29000 руб
– МегаПостинг – это прогон по 3 млн площадок (очень мощный прогон для вашего сайта) – 39 тысяч руб
– Рассылаем сообщения по сайтам используя форму обратной связи – договорная стоимость, будет зависеть от объема.
Если появятся вопросы, не стесняйтесь, обращайтесь, подскажем. принимаем usdt
Telegrm: @exrumer
Skype: Loves.ltd
www: https://XRumer.cc
Viagra Tablet price: buy Viagra online – generic sildenafil
Levitra price: Cheap Levitra online – Levitra tablet price
Tadalafil Tablet: Cialis 20mg price in USA – Buy Tadalafil 10mg
cialis 20mg order
sildenafil online: Cheapest place to buy Viagra – sildenafil 50 mg price
cheapest cenforce buy cenforce cheapest cenforce
https://viagras.online/# sildenafil 50 mg price
Viagra online price: viagras.online – Cheap Viagra 100mg