我在QTabWidget中有一个QScrollArea,我的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");
}
我的QTabWidget有不同的形式,所以我用qobject_cast投了它。同时在另一种形式,我有一个toogle按钮隐藏QWidget,所以我的QTabWidget变宽。所以在那种形式我有这样的代码:
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;
}
我意识到当WidgetResizable为真时我无法改变几何形状。它显示&#34;劣质停止,因为它接收到来自操作系统的信号&#34;错误。所以我想把它变成假的,改变几何形状,然后再把它变成真的。但是当我想要成功时,我会遇到同样的错误。有谁可以帮我解决我的问题?
答案 0 :(得分:0)
如果您的程序使用未初始化的指针,则可能导致SIGSEGV。