加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

QDockWidget 在QMainWindow中一直显示的问题解决措施

发布时间:2021-11-25 18:55:51 所属栏目:教程 来源:互联网
导读:在实际编程过程中,发现当在QDockWidget中调用setWidget函数的时候,如果widget是由QMainWindow继承而来,且设置了继承类的父对象,将导致在程序开始运行的时候就会出现QDockWidget的widget对象,注意不是QDockWidget而是他的widget对象!从而得不到想到要的d
在实际编程过程中,发现当在QDockWidget中调用setWidget函数的时候,如果widget是由QMainWindow继承而来,且设置了继承类的父对象,将导致在程序开始运行的时候就会出现QDockWidget的widget对象,注意不是QDockWidget而是他的widget对象!从而得不到想到要的dock效果以下将示例代码展示如下进行说明:
 
  class MyDockWidget : public QMainWindow  
{ /// >测试放在dockwidget中的自定义widget对象   
  
    MyDockWidget(QWidget * parent);  
......  
  
};  
  
class MainWindow : public QMainWindow  
  
{  
    MainWindow ();  
  
........  
  
};  
  
MainWindow::MainWindow  
  
{  
    QDockWidget * dock1 = new QDockWidget(this);  
    MyDockWidget  * myWidget = new MyDockWidget(dock1); /// 嘿,注意这里了!   
dock1->setWidget(myWidget)  
    dock1->hide(); //// >注意此处是希望dock1在开始的时候隐藏起来,嘿嘿,你觉得能隐藏吗??   
    this->addDockWidget(Qt::NoDockWidgetArea, dock1);  
  
   QDockWidget * dock2 = new QDockWidget(this);  
   MyDockWidget  * myWidget2 = new MyDockWidget;  
   dock2->setWidget(myWidget2)  
   dock2->hide();/// >再猜猜这里会不会显示那?   
   this->addDockWidget(Qt::NoDockWidgetArea, dock2);  
  
}  
在上面的代码中,dock1中的myWidget会显示出来,dock2会隐藏的!
 
如果MyDockWidget 不是继承自QMainWindow则可以设置父对象,实现隐藏窗口的目的!

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读