QWidget::setLayout错误:尝试设置已经有布局的QLayout [...]。

3

执行代码(无编译错误)后,控制台输出如下:

QWidget::setLayout: 试图在已经有布局的 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);


}

请修复您的代码格式(通过使用4个空格进行缩进 - 要做到这一点,请选择您的代码并按下ctrl-K)。 - Stefan Monov
发布未修改的源代码 - 你呈现的片段显然是不完整的(例如没有SetTableContent实现,模型没有设置在searchTable上)。只有这样别人才能帮助你。 - chalup
实际上,Chalup,我已经在SetTableContent方法中实现了setModel方法。还有一件事,这个小部件是从另一个类(QMainWindow)中调用的。 - Finder
1个回答

6

如何查找已安装的布局管理器?你能告诉我吗? - Finder
谢谢Ronny...我明白了...我使用了qDeleteAll(myQWidget->children()); - Finder
1
我认为测试 layout() != 0 是否足够。 - Ronny Brendel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接