因此,我代码的非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/