Qt 最大化与还原有关问题
发布时间:2010-05-30 20:52:22 文章来源:www.iduyao.cn 采编人员:星星草
Qt 最大化与还原问题
本帖最后由 cm709885067 于 2011-09-27 17:54:44 编辑
需要拦截子窗口的最大化与还原事件,自定义最大化显示区域,通过继承winEvent可以拦截到,但是当覆盖showMaximized和showNormal函数后,最大化按钮的图标没有改变!如果先设置子窗口标记为最大化,再调用覆盖的最大化函数,子窗口闪烁一下之后可以达到自定义大小的最大化效果,但是再点击最大化按钮,子窗口还原成自定义大小。可windowState还是WindowMaximized,而且最大化按钮图标还是最大化图标,跪求牛人解答
------最佳解决方案--------------------
处理WM_GETMINMAXINFO消息
#include <windows.h>
bool MainWindow::winEvent ( MSG * message, long * result )
{
switch (message->message)
{
case WM_GETMINMAXINFO: {
// GetSysemMetrics(): http://msdn.microsoft.com/en-us/library/ms724385(VS.85).aspx
// ptMinTrackSize - The minimum tracking width/height of a window, in pixels.
// The user cannot drag the window frame to a size smaller than these dimensions.
// ptMaxTrackSize - The default maximum width/height of a window that has a caption
// and sizing borders, in pixels. This metric refers to the entire desktop. The user cannot
// drag the window frame to a size larger than these dimensions.
// WM_GETMINMAXINFO: http://msdn.microsoft.com/en-us/library/ms632626(VS.85).aspx
// MINMAXINFO structure: http://msdn.microsoft.com/en-us/library/ms632605(VS.85).aspx
MINMAXINFO *mmi = (MINMAXINFO*) (message->lParam);
QDesktopWidget desktopWidget;
QRect desktop = desktopWidget.availableGeometry();
mmi->ptMaxSize.x = desktop.width();
mmi->ptMaxSize.y = desktop.height();
mmi->ptMaxPosition.x = desktop.x();
mmi->ptMaxPosition.y = desktop.y();
mmi->ptMinTrackSize.x = this->minWidth; // minimum width for your window
mmi->ptMinTrackSize.y = this->minHeight; // minimum height for your window
mmi->ptMaxTrackSize.x = desktop.width();
mmi->ptMaxTrackSize.y = desktop.height();
result = 0;
return true;
break;
}
return false;
}
------其他解决方案--------------------
2楼的方式并不是我想要的结果,availableGeometry的大小就是整个屏幕除了系统任务栏之外的区域,而我想要最大化的区域可能只是其中的一部分
------其他解决方案--------------------
重点是处理WM_GETMINMAXINFO消息,不是让你把上面的代码全部照搬
------其他解决方案--------------------
谢谢masterz。 MFC没用过的小白。弄了好旧,直到看到这个帖子。
谢谢啦。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
Qt Creator 2.1 Beta 2 和Qt 4.7.1 发布
转载:http://www.cmdn.net/news/1148
诺基亚发布了Qt框架的跨平台开发环境(IDE) –Qt Cre...
-
Qt菜单的显示问题
我的是在ubuntu11.10虚拟机上运行的qt creator4,现在刚入门,按照http://www.yafeilinux.com/?p=30的例子添加菜单...
-
'make' 不是内部或外部命令,也不是可运行的程序或批处理文件?
根据HTML code
http://v.youku.com/v_show/id_XMTA1NDEzODUy.html
的...
-
visual studio 2010编译qt的demo无法运行,求教。
安装的qt-win-opensource-4.8.0-vs2010.exe和qt-vs-addin-1.1.10.exe
然后想运行...
-
QT,'HANDLE'没有命名的一个类型
网上说QT是,一处编写,处处编译,可是我在windows下写好了串口通讯程序,在linux下编译时,却提示'HANDLE'...
-
关于QT的授权
一直都没搞懂QT的商业授权是怎么回事,请问如果我用QT在电视机机顶盒上开发一款基于QT的播放器,如果我没有获得商业授...
-
有关QTable制作表格保存问题
我使用的是QT2,需要制作一个表格,然后输入数据后保存。我源码在以下网址,set.zip压缩包中http://www.qt...
-
Qt怎样禁止用户最大化窗口
用Qt写一个窗口,如果继承QDialog,那窗口就只有关闭按钮,如果继承QWidget,那么就有关闭,最大化,最小化三个按...
-
QT4.4.3版本窗体透明后界面失去焦点无法响应键盘事件
用的是Qt4.4.3版本,窗体透明的方法如下:
C/C++ code
QPalette pal = pale...
-
QT4下载到开发板的问题
友善的2440开发板,按照一些教程装好了QT4在Linux下的开发环境。
用NFS启动开发板,把arm版编译出来的应用程...