Qt控件显示,Windows判断隐藏

原创 2017年01月03日 15:00:55

最近一直在解决一个问题: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,该方法未验证。


           



相关文章推荐

QFrame类使用总结

QFrame与QWidget的区别 QFrame是基本控件的基类,QWidget是QFrame基类,关系如下: QPushButton,QLabel… -> QFrame ->QWidget 我们经常...

QT 判断当前焦点是否在某控件上

ui->pushButtonhasFocus()->hasFocus ui->treeWidget->hasFocus()
  • hailmy
  • hailmy
  • 2014年06月06日 11:30
  • 2862

QT中QTabWidget的使用

.pro代码: #------------------------------------------------- # # Project created by QtCreator 2015-11-...

Qt5之控件的隐藏显示与移动

本例程实现控件的隐藏、显示,以及控件的移动。         对于控件的信号与槽等基础技术在这里不再累赘,直接进入关键技术点:        本例程中,当按下按钮时,列表框上移,按钮与列表框之间的...

Qt控件精讲六:显示组件

Qt Creator有10种DisplayWidgets,如下图: 控件类 控件名 中文名 控件类 控件名 中文名 QLabel Label 标签 QLCDNumber LCDNumb...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Qt 之 show,hide,setVisible,setHidden,close 等小结

QWidget和QDialog中让人极易混淆的几个函数。有些负责控制界面的显示与隐藏,有些负责对象的删除。比如:show,hide,setVisible,setHidden,close,done, a...

Qt5之控件的隐藏显示与移动

本例程实现控件的隐藏、显示,以及控件的移动。         对于控件的信号与槽等基础技术在这里不再累赘,直接进入关键技术点:        本例程中,当按下按钮时,列表框上移,按钮与列表...

QT按钮显示和隐藏

//创建GroupBox,将按钮放置进去 ui.groupBox->setGeometry(100, 100, 150, 50); // int x=ui.groupBox->geometry().x...

【框架-QT】隐藏QWidget及QWidget派生的类的外框

this->setWindowFlags(Qt::FramelessWindowHint);
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt控件显示,Windows判断隐藏
举报原因:
原因补充:

(最多只允许输入30个字)