QT将窗体变为顶层窗体 .
来源:互联网 发布:java小游戏源代码下载 编辑:程序博客网 时间:2024/05/17 23:35
来源 http://blog.csdn.net/lazydreamhunter/article/details/8660783 这个博客几篇文章不错
我们知道,在windows上通过鼠标双击某应用程序图标,该应用程序往往会以顶层窗口的形式呈现在我们面前,但是对于一个已经打开的非顶层窗口,我们怎么将其激活为顶层窗口呢?要达到激活,这个必须要满足两个条件,第一,必须要有通知激活的人,这个人必须是另一个应用程序(或同一应用程序的不同示例),他能发送信息给该窗体;第二,该窗体能够解析出该消息。至于一个应用程序如何向另一个应用程序发送消息的方法有很多,如共享内存,网络的方式等等。这里就不做详述,好,闲话少说,我们进入正题,有了前面的两个条件,假设现在该窗体所在的应用程序解析到了另一个应用程序的通知激活消息,那麽该窗体怎么将其激活为桌面的顶层窗体呢?
- void CWidget::activateWindow()
- {
- Qt::WindowStates winStatus = Qt::WindowNoState;
- if (windowState() & Qt::WindowMaximized)
- {
- winStatus = Qt::WindowMaximized;
- }
- setWindowState(Qt::WindowMinimized);
- setWindowState(Qt::WindowActive | winStatus);
- setGeometry(curGemRect);
- activateWindow();
- raise();
- }
void CWidget::activateWindow(){ Qt::WindowStates winStatus = Qt::WindowNoState; if (windowState() & Qt::WindowMaximized) { winStatus = Qt::WindowMaximized; } setWindowState(Qt::WindowMinimized); setWindowState(Qt::WindowActive | winStatus); setGeometry(curGemRect); activateWindow(); raise();}
通过在窗体处理函数中调用上述函数,就可以将该窗体设为顶层窗体,其中,CWidget派生自QWidget(当然其他窗体也行,只要窗体的最终父类是QWidget就行),curGemRect是CWidget的成员变量,用来保存窗体的几何位置,这样就能记住窗体上一次弹出的位置,不过还要重载两个函数,resizeEvent和moveEvent,以保证窗体大小和位置改变后能时刻记住其位置。
- voidCWidget::resizeEvent(QResizeEvent*event)
- {
- curGemRect = geometry();
- }
- void CWidget::moveEvent(QMoveEvent *event)
- {
- curGemRect = geometry();
- }
voidCWidget::resizeEvent(QResizeEvent*event){ curGemRect = geometry();}void CWidget::moveEvent(QMoveEvent *event){ curGemRect = geometry();}
- Qt将窗体变为顶层窗体
- QT将窗体变为顶层窗体 .
- Qt将窗体变为顶层窗体(activateWindow(); 和 raise() )
- Qt顶层圆角窗体
- Activity的顶层窗体
- 窗体顶层显示 MFC
- C# 将新打开的窗体置为最顶层
- Qt实现当鼠标移动到窗体上,窗体由半透明变为不透明
- Qt实现当鼠标移动到窗体上,窗体由半透明变为不透明
- Qt实现当鼠标移动到窗体上,窗体由半透明变为不透明
- Qt 窗体
- 将窗体从属于主窗体
- 将窗体从属于主窗体
- 将窗体从属于主窗体
- 一个窗体中Process启动另一个窗体,设置当前窗体为非顶层窗体
- 窗体form在最前面(顶层),topmost
- WPF中获取顶层窗体的句柄
- 让窗体保持在最顶层实例
- Linux 正则表达式
- build/core/java.mk:20: *** dalvik/dexgen: Invalid LOCAL_SDK_VERSION '4' Choices are: current . S
- 网站学习备忘012——WordPress函数备忘
- Windows Vista/7中关机、睡眠和休眠的区别
- android mediaplayer client与server的交互流程
- QT将窗体变为顶层窗体 .
- error: no matching function for call to 'MainWindow::connect(*&, ...)
- iphone程序启动互相调用, 打开其他程序
- linux命令高级功能汇集
- Failed to install *.apk on device *: timeout
- QTabWidget改变了控件的父子关系 .
- opensource siem
- jQuery中append、appendTo、prepend、prependTo、before、insertBefore、after与insertAfter方法总结
- Davinci内核镜像uImage的编译