QML window 带框架的最小尺寸
QML window minimal size with frame
我想为我的 QML window 设置最小大小。但是,如果我在我的 main.qml 中设置最小宽度和高度,我得到的 window 的最小尺寸比我设置和预期的要大。
问题是最小尺寸应用于 window 框架内的视图,并且未考虑 window 框架和标题尺寸。
ApplicationWindow {
id: application
minimumWidth: 1024
minimumHeight: 768
visibility: "Maximized"
}
有没有办法设置应用 window 最小尺寸并考虑到 window 框架?
我使用 Qt 5.4。
也许使用 Qt::FramelessWindowHint
隐藏框架(如果使用 qml 查看器,则使用 -frameless
)?我猜这是因为框架是 OS.
窗口系统的一部分
刚刚找到this,也许可以从目标OS获取帧大小。
正如@luke_carter 已经说过的,可以通过调用与其大小相关的 QFrame 函数之一,例如 QFrame::frameGeometry()。它会让你 window 大小 包括 框架和标题栏。所以你只需要调整 QML window 大小。我认为最好的方法是使用具有合适功能的单例,例如:
QRect MySingleton::frameSize(QObject *window)
{
QQuickWindow *qw = qobject_cast<QQuickWindow *>(window);
if(qw)
return qw->frameGeometry();
return QRect();
}
在 QML 中:
Window {
id: wnd
visible: true
width: 300
height: 300
Component.onCompleted: {
var rect = MySingleton.frameSize(wnd);
console.log(rect.width + "," + rect.height);
}
}
我想为我的 QML window 设置最小大小。但是,如果我在我的 main.qml 中设置最小宽度和高度,我得到的 window 的最小尺寸比我设置和预期的要大。 问题是最小尺寸应用于 window 框架内的视图,并且未考虑 window 框架和标题尺寸。
ApplicationWindow {
id: application
minimumWidth: 1024
minimumHeight: 768
visibility: "Maximized"
}
有没有办法设置应用 window 最小尺寸并考虑到 window 框架?
我使用 Qt 5.4。
也许使用 Qt::FramelessWindowHint
隐藏框架(如果使用 qml 查看器,则使用 -frameless
)?我猜这是因为框架是 OS.
刚刚找到this,也许可以从目标OS获取帧大小。
正如@luke_carter 已经说过的,可以通过调用与其大小相关的 QFrame 函数之一,例如 QFrame::frameGeometry()。它会让你 window 大小 包括 框架和标题栏。所以你只需要调整 QML window 大小。我认为最好的方法是使用具有合适功能的单例,例如:
QRect MySingleton::frameSize(QObject *window)
{
QQuickWindow *qw = qobject_cast<QQuickWindow *>(window);
if(qw)
return qw->frameGeometry();
return QRect();
}
在 QML 中:
Window {
id: wnd
visible: true
width: 300
height: 300
Component.onCompleted: {
var rect = MySingleton.frameSize(wnd);
console.log(rect.width + "," + rect.height);
}
}