¿Cómo hacer que un widget de subwindow Qmdiarea no sea resistente?
Pregunta
Entonces los noQMdiArea
versión de mi código,
MyWidget::MyWidget(QWidget* parent)
{
...
layout()->setSizeConstraint( QLayout::SetFixedSize );
}
MainWindow::MainWindow(...)
{
...
MyWidget* wgt = new MyWidget(NULL);
wgt->show();
}
Funciona bien y produce un widget que el usuario no puede cambiar el tamaño. Pero cuando el MainWindow
El código se reemplaza con
MainWindow::MainWindow(...)
{
...
MyWidget* wgt = new MyWidget(ui->mdiArea); //Or MyWidget(NULL), same result
ui->mdiArea->addSubWindow(wgt);
}
la ventana, ahora dentro del QMdiArea
, es reevilable. No parece ser un problema de Qt :: WindowFlags, no manejan la política de cambio de tamaño. ¿Seguramente hay una manera de hacer esto? Nb no puedo usar algo como setFixedSize(ht, wd)
Dado que el tamaño del widget puede cambiar programáticamente (se agregan y eliminan los subwidgets). Pero el usuario no debería poder cambiarlo.
Solución
Lo siguiente funcionó para mí:
MyWidget* wgt = new MyWidget(ui->mdiArea);
QMdiSubWindow* subWindow = ui->mdiArea->addSubWindow(wgt);
subWindow->setFixedSize(wgt->size());
wgt->show();
Otros consejos
A pesar de MyWidget
no es restablecible cuando llamas:
ui->mdiArea->addSubWindow(wgt);
El widget se pone en un QMdiSubWindow
cual es Responible. Todo lo que tiene que hacer es obtener la ventana que se crea y arreglar su tamaño:
QMdiSubWindow* subWindow = ui->mdiArea->addSubWindow(wgt);
subWindow->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
Esto debería funcionar, pero no he probado este código yo mismo.
Editar: bueno ... aparentemente eso no Arregle el tamaño. :(