paip.提升用户体验---c++ qt 悬浮窗实现
作者Attilax , EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax
功能:一个悬浮窗,一个普通窗体.. 双击悬浮窗可以显示或者隐藏普通窗体...
1.建立悬浮窗:
--------------------------
悬浮窗要点:
a.从QWidget 继承..没有工具bar, 状态bar...当然,从QMainWindowi继承也能了.
b.去掉标题栏: setWindowFlags( Qt::FramelessWindowHint
c.窗体置顶 setWindowFlags( Qt::WindowStaysOnTopHint
d. 隐藏任务栏图标 setWindowFlags( Qt::Tool) //工具条模式
e: 背景透明 setAttribute(Qt::WA_TranslucentBackground, true);
f: 添加鼠标事件..拖曳..鼠标动态图标等.
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *event);
void enterEvent(QEvent *event);
void leaveEvent(QEvent *event);
2.建立普通窗体.
3.悬浮窗增添双击事件,
---------------------------------
signals:
void DoubleClickedSignal();
void FormWdg:: mouseDoubleClickEvent ( QMouseEvent* event )
{
qDebug()<< " floqt win double click";
emit DoubleClickedSignal();
}
4.绑定悬浮窗双击事件信号到执行方法.
---------------------------------------------------------
int main(int argc, char *argv[])
{ MainWindow* w=new MainWindow() ;
FormWdg* widget=new FormWdg() ;
QObject:: connect(widget, SIGNAL(DoubleClickedSignal()), w, SLOT(ShowMainWindow()));
widget->show();
w->show();
5.实际的执行方法.
---------------------------
public slots:
void ShowMainWindow(); //for float invoke
void MainWindow::ShowMainWindow()
{
if(windowState() & Qt::WindowMinimized)
{ show();
setWindowState(Qt::WindowNoState);
} else {
setWindowState(Qt::WindowMinimized);
}
}
参考参考
QT中QWidget、QDialog及QMainWindow的区别 - Hi小新 - 博客园.htm
QT:不规则窗口的实现 - 小豪之家 - 博客频道 - CSDN.NET.htm
QT:窗口最小化时显示一个小浮标_Linux编程_Linux公社-Linux系统门户网站.htm
QT:窗口最小化时显示一个小浮标_Linux编程_Linux公社-Linux系统门户网站.htm
QT中QWidget、QDialog及QMainWindow的区别 - 柳北风儿~~~~~~~欲宇仙炅 - ITeye技术网站.htm
Qt之二(窗口部件) - wen.shuijie的日志 - 网易博客.htm
QT区分鼠标单击和双击事件_陈伯林的电子备忘录_百度空间.htm
Qt自定义窗口基本事件 - chenjinxian88的专栏 - 博客频道 - CSDN.NET.htm
QT中大connect的使用 - imxiangzi的专栏 - 博客频道 - CSDN.NET.htm
qt的qmake和shadow build - bailizi的专栏 - 博客频道 - CSDN.NET.htm
浅谈 qmake 之 shadow build - 1+1=2 - 博客频道 - CSDN.NET.htm
error No rule to make target `c Users Administrator Desktop LED_mainWindow pcb_view.ui', needed by - jiong_1988的专栏 - 博客频道 - CSDN.NET.htm
Qt 出现“undefined reference to `vtable for”原因总结 - MoMo_KUA_1的专栏 - 博客频道 - CSDN.NET.htm