3
votes

On execution (no compile error) I get on the console

QWidget::setLayout: Attempting to set QLayout "" on CGSearchResult "", which already has a layout

I am using the following code:

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);


}
1
please fix your code formatting (by indenting it all with 4 spaces - to do that, select your code and press ctrl-K)Stefan Monov
Post unmodified source - the snippet you present is obviously incomplete (for example there is no SetTableContent implementation, the model is not set on searchTable). Only then someone will be able to help you.chalup
Actully Chalup, I have implemented the setModel method on the SetTableContent method..one more thing this widget is calling from the another class.(QMainWindow).Finder

1 Answers

6
votes

http://qt-project.org/doc/qt-4.8/qwidget.html#setLayout

If there already is a layout manager installed on this widget, QWidget won't let you install another. You must first delete the existing layout manager (returned by layout()) before you can call setLayout() with the new layout.