Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 由于在可调整大小的滚动区域上接收到来自操作系统错误的信号,下位机停止_C++_Qt_Qt4 - Fatal编程技术网

C++ 由于在可调整大小的滚动区域上接收到来自操作系统错误的信号,下位机停止

C++ 由于在可调整大小的滚动区域上接收到来自操作系统错误的信号,下位机停止,c++,qt,qt4,C++,Qt,Qt4,我在QTabWidget里面有一个qscrollara,在QTabWidget旁边有一个QWidget。我想在调整主窗口的大小时调整QScrollArea的大小,因此我制作了如下代码: void frmSummaryContact::on_btnAddNewContact_clicked() { MainWindow *mnWindow = qobject_cast<MainWindow *>(this->parent()->parent()->parent

我在QTabWidget里面有一个qscrollara,在QTabWidget旁边有一个QWidget。我想在调整主窗口的大小时调整QScrollArea的大小,因此我制作了如下代码:

void frmSummaryContact::on_btnAddNewContact_clicked()
{
    MainWindow *mnWindow = qobject_cast<MainWindow *>(this->parent()->parent()->parent()->parent()->parent()->parent());
    QTabWidget *tbWidget = qobject_cast<QTabWidget *>(this->parent()->parent()->parent()->parent());
    frmDetailContact *frm = new frmDetailContact(mnWindow, "input", -1, mnWindow->rightPane());

    QScrollArea *scrlForm = new QScrollArea;
    scrlForm->setWidgetResizable(true);
    scrlForm->setWidget(frm);

    mnWindow->AddNewTab(tbWidget, scrlForm, "Add Contact");
}
void frmDetailContactToggle::on_btnSearch_clicked()
{
    MainWindow *mnWindow = qobject_cast<MainWindow *>(this->parent()->parent()->parent());
    QLayoutItem *child;

    while ((child = mnWindow->rightPane()->layout()->takeAt(0)) != 0)
        child->widget()->setVisible(false);

    mnWindow->rightPane()->setVisible(false);
    QScrollArea *scrlContent = qobject_cast<QScrollArea *>(mnWindow->tabContentWidget()->currentWidget());
    scrlContent->setWidgetResizable(false);
    mnWindow->tabContentWidget()->setGeometry(mnWindow->tabContentWidget()->x(), mnWindow->tabContentWidget()->y(), m_width - mnWindow->tabContentWidget()->x() - 10, mnWindow->tabContentWidget()->height());
    scrlContent->setWidgetResizable(true);
    m_showRightPane = false;
}
我的QTabWidget是不同的形式,所以我用qobject_cast来转换它。同时,在另一种形式中,我有一个toogle按钮来隐藏QWidget,这样我的QTabWidget就会变得更宽。因此,在这种形式下,我有一个如下代码:

void frmSummaryContact::on_btnAddNewContact_clicked()
{
    MainWindow *mnWindow = qobject_cast<MainWindow *>(this->parent()->parent()->parent()->parent()->parent()->parent());
    QTabWidget *tbWidget = qobject_cast<QTabWidget *>(this->parent()->parent()->parent()->parent());
    frmDetailContact *frm = new frmDetailContact(mnWindow, "input", -1, mnWindow->rightPane());

    QScrollArea *scrlForm = new QScrollArea;
    scrlForm->setWidgetResizable(true);
    scrlForm->setWidget(frm);

    mnWindow->AddNewTab(tbWidget, scrlForm, "Add Contact");
}
void frmDetailContactToggle::on_btnSearch_clicked()
{
    MainWindow *mnWindow = qobject_cast<MainWindow *>(this->parent()->parent()->parent());
    QLayoutItem *child;

    while ((child = mnWindow->rightPane()->layout()->takeAt(0)) != 0)
        child->widget()->setVisible(false);

    mnWindow->rightPane()->setVisible(false);
    QScrollArea *scrlContent = qobject_cast<QScrollArea *>(mnWindow->tabContentWidget()->currentWidget());
    scrlContent->setWidgetResizable(false);
    mnWindow->tabContentWidget()->setGeometry(mnWindow->tabContentWidget()->x(), mnWindow->tabContentWidget()->y(), m_width - mnWindow->tabContentWidget()->x() - 10, mnWindow->tabContentWidget()->height());
    scrlContent->setWidgetResizable(true);
    m_showRightPane = false;
}

我已经意识到,当WidgetResizeable为true时,我无法更改几何体。它显示由于接收到来自操作系统错误的信号,下位机停止。所以我想把它弄错,改变几何结构,然后再把它弄成真的。但当我想让它成为现实时,我遇到了同样的错误。有人能帮我解决我的问题吗?

如果您的程序使用未初始化的指针,可能会导致SIGSEGV