当前位置: 代码迷 >> QT开发 >> 底层由于接受到操作系统信号而停止
  详细解决方案

底层由于接受到操作系统信号而停止

热度:45   发布时间:2016-04-25 04:11:25.0
底层因为接受到操作系统信号而停止
如题,想我这样的新手最喜欢遇到我问题。
    QHBoxLayout *vbox = new QHBoxLayout(this);
    vbox->addWidget(_EPSzhuDianD);
    vbox->addWidget(_EPSbeiDianD);
    vbox->addWidget(_EPStongXunD);
    ui->groupBox->setLayout(vbox);
执行到:
    ui->groupBox->setLayout(vbox);
就崩溃了。
前面的_EPSzhuDianD、_EPSbeiDianD、_EPStongXunD都继承的QLabel,都用new申请了空间的。
ui->groupBox是直接拖的控件。


检查了一下,没发现内存管理的问题,用Q_CHECK_PTR宏检查也是没发现。
但是就是到那就崩溃。

设断点,一直进入函数,到QScopedPointer类的

   inline T *data() const
    {
        return d;
    }
函数的时候挂掉的。

实在没办法了,求助...

------解决方案--------------------
清除编译产生的中间文件(只保留源文件),从头编译。
------解决方案--------------------
如果楼上说的还不行,一般是犯了低级的对象没分配内存,或无意中 free 掉了。
建议仔细排查。
------解决方案--------------------
 ui->groupBox->setLayout(vbox)
童鞋,你这句多余了
因为前面     QHBoxLayout *vbox = new QHBoxLayout(this);  已经执行了这句的功能。

两个改法:
1. new处 参数设为null
2. 去掉多余那一句。

别的是否有问题我就不知道了

另外,提问问题时候望态度端正,您这一句话几个错别字!
------解决方案--------------------
我也没仔细看,这下在逻辑上来说,你的代码就有问题啊。
 QHBoxLayout *vbox = new QHBoxLayout(this)   使用this  是创建this的layout!!!
------解决方案--------------------
接下来你又把创建的这个layout赋给别的变量,就算是不报错,也是qt的bug所致啊~
------解决方案--------------------
引用:
引用:ui->groupBox->setLayout(vbox)
童鞋,你这句多余了
因为前面     QHBoxLayout *vbox = new QHBoxLayout(this);  已经执行了这句的功能。

两个改法:
1. new处 参数设为null
2. 去掉多余那一句。

别的是否有问题我就不知道了
……

你重载了setLayout()函数?
  相关解决方案