Qt控件显示,Windows判断隐藏

最近一直在解决一个问题:Qt控件的显示与隐藏

下述内容全部是在Qt5.6上实现

以QDialog上的QFrame控件类型为例

   QFrame frame;


1.Qt判断控件是否显示使用的函数是isVisible

   (1)加入frame.isVisible返回的是false,先查看该对话框是否已经显示,比如该函数是否是在对话框调用exec前判断的。

   (2)若是在对话框显示前判断必然返回false。

   (3)当控件显示出来时,QT会发生事件showEvent(QShowEvent* event)


2.Windows判断控件是否显示使用的函数是IsWindowVisible(HWND hWnd)

   (1)这里的hWnd指的是窗口句柄,Qt控件通过winId获取(获取后需要类型转换哟)

   (2)winID是QWidget,QWindow的成员函数,所有继承他们的子类都有该函数


3.二者的联系

   (1)Windows下判断控件的显示与隐藏我至今没有搞明白,但可以肯定的是Qt-isVisible返回false,IsWindowVisible必然返回false

   (2)实际中遇到isVisible返回true,而IsWindowVisible返回false,那么需要自己手动修改了:

       a、使用ShowWindow函数:

             Function ShoWWindow(hwnd: HWND,nCmdShow;int):bool;

             其中,hWnd参数是应用程序的句柄,nCmdShow参数代表了窗体的显示状态。
             nCmdShow参数的值如下:  
             sw_hide      隐藏窗口,激活另一个窗口   
             sw_maximize   将指定的窗口最大化  
             sw_minimize   将指定的窗口最小化   
             sw_restore     还原指定的窗口   
             sw_show       以当前位置和大小激活窗口   
             sw_showdefault    以传递到createprocess函数中的startupinfo记录中指定的sw_flag方式显示窗口
             sw_showmaximized    激活并最大化指定窗口
             sw_showminimized    激活并最小化指定窗口   
             sw_showminnoactive  以最小化方式显示指定窗口,当窗口保持激活  
             sw_showna      以当前状态显示指定窗口,当前窗口保持激活  
             sw_shownoactivate    以其最近的大小和位置显示指定窗口,当前窗口保持激活   
             sw_shownormal     激活并显示指定窗口,如果该窗口被最大化或最小化,将还原其原本的大小和位置。   
             隐藏应用程序在任务栏采用sw_hide是比较合适的。
             代码如下.
             ShowWindow(Application.Handle,SW_HIDE);

             a处内容参考:  http://www.cnblogs.com/laozhao/articles/api_showwindow.html

             这里nCmdShow的值需要大写

             该方法已经验证,确实可以实现

         b、使用UpdateWindow,该方法未验证。


           



你可能感兴趣的:(Qt5,C++)