今天在CSDN偶然看到一位前辈用JAVA写的QQ右下角弹窗提示,而自己正在学习Qt,所以也自己试着写一下,虽然代码乱的一塌糊涂,但最后还是能够运行了。
程序最终运行:
输入内容并点击确定的时候,从右下角平滑弹出下图。
停留10秒后,逐渐变透明并最终消失,可自行关闭和点击浏览按钮浏览输入的网址。
一、输入内容的对话框
从QDialog继承,点击确定,内容不为空时,作适当处理。
//点击确定按钮的信号槽
void inputMsg::onOK()
{
if(lineEditText->text().isEmpty() ||textEditContent->toPlainText().isEmpty() ||lineEditUrl->text().isEmpty())
return;
//自定义的信号,把标题,内容,网址发给弹出窗口
emit initMsg(lineEditText->text(),textEditContent->toPlainText(),lineEditUrl->text());
//返回accepted
QDialog::accept();
}
二、弹出窗口
弹出窗口应该是无边框,自绘标题栏的。
标题栏:
从QWidget继承,加入QLabel显示标题,关闭按钮用于向弹出窗口发送关闭信号。并在两者之间加入弹簧支撑。
myPushButton从QPushButton继承。设置按钮的各种事件。
myPushButton.h
private:
void setBkPalette(int transparency);//设置透明度
protected:
void enterEvent(QEvent *);//鼠标进入事件
void leaveEvent(QEvent *);//离开
void mousePressEvent(QMouseEvent *e);//点击
void mouseReleaseEvent(QMouseEvent *e);//释放
弹窗窗口:
弹出窗口主要由三部分组成:
主要靠3个定时器:
1.平滑移动的定时器,窗口从右下角缓慢移动到合适位置。
2.窗口停留定时器,移动到合适位置后,开始即时,10S后窗体自动消失,也可自行点击关闭。
3.窗体关闭的定时器,关闭时,采用透明度渐变的方式,完全透明时自动推出。
基本就是这些了,比较粗糙,源码已上传至:小弟挣分也不容易啊,就不要怪小弟设了1分了。