QT 创建子窗体

Qt创建子窗体这里说明一点问题;

一:子窗口创建方式:

Qt窗体上的子窗体一般是“new”创建的,当父窗体删除的时候,同时也会清理相关的子窗体;

如果子窗体不是“new”创建的,而是用static变量创建,关闭父窗体的时候会程序崩溃,原因应该是父窗体删除到static子窗体时不对;

如:

//主窗体函数:

void slot_newWidget()
{

//这样会导致问题;
// static NewQWidget1 nqwt(this);
// nqwt.show();


//一般创建方法:
NewQWidget1 * pNewQWidget1 = new NewQWidget1(this);
pNewQWidget1->show();

}



二:子窗口设置方式:

(1):通常情况下,对于一个继承与QWidget的子窗体,直接 new NewQWidget1(this);(或setparent(this)) 参数设置为父窗体,然后 show(),这样就可以在指定窗口上创建子窗口;


(2):如果 一个窗口继承与QDialog,用这种方法,

NewQWidget1 * pNewQWidget1 = new NewQWidget1(this);
pNewQWidget1->show();

只是创建了一个非模态对话框,如果想要这个飞模态对话框显示到指定窗口上,解决方法:

设置这个窗口的属性:

(1):pNewQWidget1->setWindowFlags(Qt::Widget); //直接设置QDialog为QWidget;

              pNewQWidget1->show(); //设置后重新显示;

               

(2):

         pNewQWidget1->setWindowFlags(Qt::SubWindow); //设置QDialog为子窗口属性;

          pNewQWidget1->show(); //设置后重新显示;


(3):

         pNewQWidget1->setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);//设置自定义无边框窗口;

        pNewQWidget1->show(); //设置后重新显示;


以上简单列举三种方法,但是可以根据具体需求设置;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值