qwidget :: setLayoutエラー:Qlayout […]を設定しようとしていますが、すでにレイアウトがあります
質問
実行時(コンパイルエラーなし)コンソールに表示されます
qwidget :: setLayout:cgsearchresult "" on cgsearchResult ""でqlayout ""を設定しようとしています。
次のコードを使用しています。
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は別のウィジェットをインストールできません。新しいレイアウトでsetlayout()を呼び出す前に、最初に既存のレイアウトマネージャー(レイアウト()で返されます)を削除する必要があります。
所属していません StackOverflow