版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}