qt布局()->;setSizeConstraint

qt布局()->;setSizeConstraint,qt,Qt,Qt5中的布局()有问题。 我想创建一个动态变量对话框。 ![在此处输入图像描述][1] 以下是构造函数的代码: SortDialog :: SortDialog (QWidget * parent)      : QDialog (parent) {      setupUi (this);      SecondaryGroupBox-> hide ();      TertiaryGroupBox-> hide ();      layout () -> setSize

Qt5中的布局()有问题。 我想创建一个动态变量对话框。 ![在此处输入图像描述][1] 以下是构造函数的代码:

SortDialog :: SortDialog (QWidget * parent)
     : QDialog (parent)
{
     setupUi (this);

     SecondaryGroupBox-> hide ();
     TertiaryGroupBox-> hide ();
     layout () -> setSizeConstraint (QLayout :: SetFixedSize);
     setColumnRange ('A', 'Z');
}
项目已成功构建,但当您开始接收来自操作系统的信号时

Signal: SIGSEGV
Purpose: Segmentation fault
如果删除一行

layout () -> setSizeConstraint (QLayout :: SetFixedSize);
这个程序有效。 请帮帮我。
P.S:这是C++ QGUI编程的一个例子,QT 4(第31页)

< p>你必须创建一个布局,比如QVBoxLayout。
QVBoxLayout *layout = new QVBoxLayout;
layout->setSizeConstraint (QLayout :: SetFixedSize);
setLayout(layout);

我也有同样的问题。 我刚刚解决了。 也许两年后你不想得到答案,但我真的想在某个地方写下这一点,因为网络上没有关于这个小问题的内容

问题是Qt设计器没有生成设置对话框布局的代码。
我刚刚打开ui_sortdialog.h,发现在sortdialog中创建了一个小部件。与此小部件相比,将创建一个布局。该布局称为
gridLayout\u 4
,表单的每个小部件和布局都添加到该布局中。当我添加到函数
retranslateUi
line
SortDialog->setLayout(gridLayout_4)时一切正常。生成的代码创建了布局并完成了所有需要完成的操作,但它使SortDialog没有任何对布局的引用,因此
layout()
返回零。

这是因为您没有创建布局

返回designer并单击表单,然后选择“在网格中布局”


如果不这样做,布局将为0,程序将崩溃。

我通过在设计器窗体中更改来修复此问题。确保Qt设计器中的布局良好。特别是最后的“表单->调整大小”。(在书的第33页;创建“表格->网格布局”)。使用本书中的原始代码。

您的对话框实际上有布局吗?通常,当您寻址超出范围的内存时,会导致分段错误。您最好通过调试器运行它,并找到它在哪一行上崩溃。为什么在布局中使用括号?布局()??又短又甜!谢谢,这正是我的问题!