我想为我的QML窗口设置最小尺寸。但是,如果我在main.qml中设置最小宽度和高度,我的窗口尺寸比我设置的尺寸小。期望。 问题是最小尺寸应用于窗框内的视图,并且不考虑窗框和字幕大小。
ApplicationWindow {
id: application
minimumWidth: 1024
minimumHeight: 768
visibility: "Maximized"
}
考虑到窗口框架,有没有办法设置应用程序窗口的最小尺寸?
我使用Qt 5.4。
答案 0 :(得分:2)
也许使用Qt::FramelessWindowHint
隐藏框架(如果使用qml viewer,则隐藏-frameless
)?我猜这是因为框架是操作系统窗口系统的一部分。
刚刚找到this,可以从目标操作系统获取帧大小。
答案 1 :(得分:2)
正如@luke_carter所说,可以通过调用与其大小相关的QFrame功能之一来实现,例如QFrame::frameGeometry()。它会让你的窗口大小包括框架和标题栏。所以你需要的只是调整QML窗口大小。我认为使用具有合适功能的单例来实现这一点的最佳方法,例如:
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);
}
}