QWidget :: setlayout خطأ: محاولة تعيين qlayout [...] ، الذي لديه بالفعل تخطيط
سؤال
عند التنفيذ (لا يوجد خطأ في الترجمة) أحصل على وحدة التحكم
QWidget :: setLayout: محاولة تعيين QLayout "" على CGSearchResult "، والتي لديها بالفعل تخطيط
أنا أستخدم الكود التالي:
CGSearchResult::CGSearchResult(QWidget *parent) : QWidget(parent)
{
initControls();
SetTableContent();
}
void CGSearchResult::initControls()
{
backButton = new QPushButton(tr("&Back"));
connect(backButton, SIGNAL(clicked()), this, SLOT(showHome()));
model=new QStandardItemModel();
QWidget::setFont(QFont("Courier New", 8, QFont::Bold));
searchTable = new QTableView(this);
searchTable->showGrid();
searchTable->resize(720,400);
searchTable->horizontalHeader()->setDefaultSectionSize(170);
searchTable->verticalHeader()->setDefaultSectionSize(50);
searchTable->verticalHeader()->hide();
searchTable->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
searchTable->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QGridLayout *layout = new QGridLayout();
layout->addWidget(backButton, 0, 0, 1, 1);
layout->addWidget(searchTable, 2, 0, 1, 1);
setLayout(layout);
}
المحلول
http://qt-project.org/doc/qt-4.8/qwidget.html#setlayout
إذا كان هناك بالفعل مدير تخطيط مثبت على هذه القطعة ، فلن يسمح لك QWidget بتثبيت آخر. يجب أولاً حذف مدير التخطيط الحالي (تم إرجاعه بواسطة Layout ()) قبل أن تتمكن من الاتصال بـ SetLayout () مع التخطيط الجديد.
لا تنتمي إلى StackOverflow