前几天课设做个聊天系统,顺便实现了这个在程序外显示弹幕作为消息提示的功能,这里记录一下怎么搞。
目录
效果
思路
- 创建一个子窗口
- 将子窗口去掉窗口标题栏,设置背景透明
- 在里面放文本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("嘿嘿,我的洛天依");
}
}
}
问题
- 这个弹幕会被其他高层次的窗口遮挡,显然问题在于我们创建的窗口不是顶层窗口,这个后面再看看咋整。
synthroid brand name price
lisinopril 20 mg no prescription: can i buy lisinopril online – can i buy lisinopril over the counter in mexico
ciprofloxacin 500 mg tablet price cipro ciprofloxacin buy cipro online without prescription
Сегодня, когда диплом становится началом удачной карьеры в любой сфере, многие пытаются найти максимально быстрый и простой путь получения образования. Факт наличия документа об образовании сложно переоценить. Ведь диплом открывает дверь перед людьми, желающими начать профессиональную деятельность или продолжить обучение в любом ВУЗе.
В данном контексте наша компания предлагает очень быстро получить этот важный документ. Вы можете заказать диплом старого или нового образца, и это будет отличным решением для всех, кто не смог закончить обучение или утратил документ. Все дипломы производятся аккуратно, с максимальным вниманием к мельчайшим элементам, чтобы на выходе получился продукт, 100% соответствующий оригиналу.
Плюсы данного решения состоят не только в том, что можно оперативно получить свой диплом. Процесс организовывается удобно, с профессиональной поддержкой. Начиная от выбора требуемого образца диплома до консультаций по заполнению личной информации и доставки в любое место страны — все будет находиться под абсолютным контролем квалифицированных специалистов.
Для тех, кто хочет найти быстрый и простой способ получения необходимого документа, наша компания предлагает отличное решение. Купить диплом – это значит избежать продолжительного процесса обучения и не теряя времени переходить к достижению собственных целей, будь то поступление в ВУЗ или начало профессиональной карьеры.
https://diploman-rossiya.com
lisinopril online without a prescription
buy ciprofloxacin over the counter: buy cipro cheap – buy ciprofloxacin over the counter
pharmacy prices
hq pharmacy online 365
https://ciprofloxacin.tech/# buy cipro online without prescription
Yes! Finally someone writes about layar 303 slot.
lisinopril oral lisinopril online purchase lisinopril mexico
metformin singapore
synthroid 50 mcg generic
lisinopril best price
no prescription synthroid
canadian pharmacy online cialis
http://cytotec.club/# Abortion pills online
https://nolvadex.life/# tamoxifen and antidepressants
http://finasteride.store/# buy generic propecia without a prescription
get cheap propecia without insurance: buy propecia without rx – get propecia without insurance
best cialis
metformin 397
where can i buy zestril cost of lisinopril 10 mg lisinopril 40 mg generic
cost of valtrex generic
Yazdığınız yazıdaki bilgiler altın değerinde çok teşekkürler bi kenara not aldım.
prednisone 20mg no prescription
home cost of propecia no prescription cost generic propecia without dr prescription
lisinopril 5 mg medicine
buy cytotec in usa buy cytotec pills buy cytotec online
В современном мире, где диплом – это начало отличной карьеры в любой области, многие пытаются найти максимально быстрый и простой путь получения качественного образования. Необходимость наличия официального документа об образовании переоценить невозможно. Ведь именно диплом открывает двери перед людьми, стремящимися вступить в профессиональное сообщество или учиться в ВУЗе.
В данном контексте наша компания предлагает максимально быстро получить этот важный документ. Вы сможете купить диплом, что становится отличным решением для всех, кто не смог закончить обучение или утратил документ. дипломы выпускаются аккуратно, с особым вниманием к мельчайшим деталям. В результате вы сможете получить документ, полностью соответствующий оригиналу.
Превосходство данного подхода заключается не только в том, что вы сможете максимально быстро получить свой диплом. Процесс организовывается комфортно, с нашей поддержкой. От выбора необходимого образца документа до консультации по заполнению личной информации и доставки в любое место страны — все под абсолютным контролем квалифицированных специалистов.
Всем, кто пытается найти оперативный способ получения требуемого документа, наша компания может предложить выгодное решение. Заказать диплом – значит избежать долгого процесса обучения и сразу перейти к личным целям: к поступлению в ВУЗ или к началу удачной карьеры.
https://diplomanc-russia24.com
cheapest pharmacy canada
lisinopril 10 mg online no prescription how to order lisinopril online lisinopril 10 mg online no prescription
http://ciprofloxacin.tech/# cipro 500mg best prices
best india pharmacy
buy cytotec pills online cheap: buy cytotec over the counter – buy cytotec in usa
cost generic propecia pills: buying generic propecia pills – get generic propecia without a prescription
zestoretic coupon: zestril no prescription – cost of lisinopril 2.5 mg
cipro pharmacy buy cipro cheap ciprofloxacin over the counter
tamoxifen rash pictures: tamoxifen and weight loss – tamoxifen alternatives
online pharmacy without scripts
https://lisinopril.network/# cost of lisinopril
synthroid drug
30mg prednisone
lisinopril best price
online pharmacy cialis
metformin 500mg canada
prednisone 477
reputable online pharmacy uk
azithromycin brand name canada
https://lisinopril.network/# lisinopril 20 mg price in india