【Qt Ui】拷贝别人的Qt生成的.ui文件出现 signal from the operating system

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoxiao133/article/details/84990878

当我们用别人的Ui文件时候,自己新建的类要像下面的样子。

Wndblh2xyz.h文件如下

namespace Ui {
class Wndblh2xyz;
}
class Wndblh2xyz : public QWidget
{
	Q_OBJECT

public:
	Wndblh2xyz(QWidget *parent = 0);
	~Wndblh2xyz();

private:
    Ui::Wndblh2xyz *ui;

};

Wndblh2xyz.cpp文件如下

Wndblh2xyz::Wndblh2xyz(QWidget *parent)
    : QWidget(parent),
    ui(new Ui::Wndblh2xyz)
{
    ui->setupUi(this);
}

这里着重数一下ui(new Ui::Wndblh2xyz)。为什么要说他呢,这个是必须的,否则 ui->setupUi(this); 就会出现 未初始化的指针。因为Ui_Wndblh2xyz所有的变量(public)都是野指针,例如下面的layoutWidget,虽然已经用了 QWidget *layoutWidget;但是没调用ui(new Ui::Wndblh2xyz)默认构造函数,所有变量不能初始化。no such value
The inferior stopped because it received a signal from the operating system.
Signal name :
SIGSEGV
Signal meaning :
Segmentation fault

ui_Wndblh2xyz.h文件如下:

class Ui_Wndblh2xyz
{
public:
    QWidget *layoutWidget;

    void setupUi(QWidget *Wndblh2xyz)
    {
        if (Wndblh2xyz->objectName().isEmpty())
            Wndblh2xyz->setObjectName(QStringLiteral("Wndblh2xyz"));
        Wndblh2xyz->resize(732, 253);
        layoutWidget = new QWidget(Wndblh2xyz);

  }

猜你喜欢

转载自blog.csdn.net/xiaoxiao133/article/details/84990878