因此,我代码的非QMdiArea版本,

MyWidget::MyWidget(QWidget* parent)
{
   ...
   layout()->setSizeConstraint( QLayout::SetFixedSize );
}

MainWindow::MainWindow(...)
{
   ...
   MyWidget* wgt = new MyWidget(NULL);
   wgt->show();
}

可以正常工作并产生用户无法调整大小的小部件。但是当MainWindow代码替换为
MainWindow::MainWindow(...)
{
   ...
   MyWidget* wgt = new MyWidget(ui->mdiArea); //Or MyWidget(NULL), same result
   ui->mdiArea->addSubWindow(wgt);
}

现在位于QMdiArea中的窗口是可调整大小的。这似乎不是Qt::WindowFlags的问题,它们不处理调整大小策略。当然有办法吗?注意:我不能使用setFixedSize(ht, wd)之类的东西,因为窗口小部件的大小可以通过编程方式更改(添加和删除了子窗口小部件)。但是用户应该无法调整其大小。

最佳答案

以下为我工作:

    MyWidget* wgt = new MyWidget(ui->mdiArea);
    QMdiSubWindow* subWindow = ui->mdiArea->addSubWindow(wgt);
    subWindow->setFixedSize(wgt->size());
    wgt->show();

关于c++ - 如何使QMdiArea子窗口小部件不可调整大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8857471/

10-11 00:56