我使用了以下代码:
setFixedSize(size());
来防止窗口调整大小,但是当鼠标在窗口边框上悬停时,调整大小箭头仍然会出现。
有没有更好的方法禁用窗口调整大小以避免显示穿过边框的箭头?
我使用了以下代码:
setFixedSize(size());
来防止窗口调整大小,但是当鼠标在窗口边框上悬停时,调整大小箭头仍然会出现。
有没有更好的方法禁用窗口调整大小以避免显示穿过边框的箭头?
Qt有一个名为Qt::MSWindowsFixedSizeDialogHint
的窗口标志。根据您的具体需求,您需要将此标志与Qt::Widget
、Qt::Window
或Qt::Dialog
结合使用。
void MyDialog::MyDialog()
{
setWindowFlags(Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
...
}
如果您确切地知道所需窗口的大小,则可以使用一行代码:
this->setFixedSize(QSize(750, 400));
尝试像这样:
this->statusBar()->setSizeGripEnabled(false);
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if(event->type() == QEvent::MouseMove)
{
QSizeGrip *sg = qobject_cast<QSizeGrip*>(obj);
if(sg)
qDebug() << sg->parentWidget();
}
return false;
}
你也可以捕获它的展示事件,这取决于你。
Qt::MSWindowsFixedSizeDialogHint
)。 - ForeverLearning我发现在布局上调用setSizeConstraint(QLayout::SetFixedSize) 对我来说效果最好。具体来说,从QMainWindow构造函数中,我调用了:
this->layout()->setSizeConstraint(QLayout::SetFixedSize);
这里有一个链接到文档:http://doc.qt.io/qt-4.8/qlayout.html#SizeConstraint-enum
(我正在使用Qt 4.8。)
既然这也是解决OP问题的简单方法,我想分享给其他人考虑。似乎在Qt中有许多方法可以完成这个任务,但并非所有方法都适用于每种情况。 我尝试了这里发布的其他选项,但它们在我的情况下都存在各种问题或限制。
setFeatures(QDockWidget::DockWidgetClosable | QDockWidgetFloatable)
。这样,您就无法使用鼠标拖动dock,但仍然可以将其分离。不知道是否会产生问题。 - LRDPRDX使用
setMinimumSize(QSize(宽度_像素,高度_像素))
setMaximumSize(QSize(宽度_像素,高度_像素))
两种方法具有相同的大小。您将看不到调整大小的光标,窗口也不会被调整大小/最大化。
this->setFixedSize(this->width(), this->height());
如果需要,您还可以使用以下方法为宽度和高度设置单独的参数:
this->setFixedWidth(this->width());
this->setFixedHeight(this->height());
this->setFixedWidth(int);
this->setFixedHeight(int);
this->setMinimumSize(sz);
this->setMaximumSize(sz);
这里的sz是一个QSize对象。