QML 窗口最小宽度

Posted

技术标签:

【中文标题】QML 窗口最小宽度【英文标题】:QML Window min-width 【发布时间】:2012-06-01 06:39:09 【问题描述】:

我正在使用 QML 和下面的代码创建一个窗口。如何设置窗口的最小宽度,这样我就不能调整小于我定义的值?

Rectangle 
    color: red;
    width: 300
    height: 100


int main(int argc, char *argv[])

    QApplication app(argc, argv);
    QDeclarativeView view;

    view.setSource(QUrl::fromLocalFile("QML/main.qml"));
    view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
    view.show();

    return app.exec();

【问题讨论】:

【参考方案1】:

我不知道您使用的是哪个版本的 QML,但如果您可以使用 QtQuick 2,那么您可以将 ApplicationWindow 设置为 QML 中的***项目,如下所示:

import QtQuick 2.0

ApplicationWindow 
    id: appWnd
    minimumWidth: 300
    minimumHeight: 300

您还可以查看每个特定 QML 类型的 implicitWidthimplicitHeight 属性,并将 appWnd minimumWidth/Height 设置为包含布局的implicitWidth/Height。例如:

import QtQuick 2.0
import QtQuick.Layouts 1.0
import QtQuick.Controls 1.0

ApplicationWindow

    minimumWidth: gridLayout.implicitWidth
    minimumHeight: gridLayout.implicitHeight
    height: 500
    width: 500

    color: "gold"

    GridLayout 
        id: gridLayout
        anchors.centerIn: parent
        columns: 2

        Button text: "Push me" 
        Button text: "Push me" 
        Button text: "Push me" 
        Button text: "Push me" 
        Button text: "Push me" 
        Button text: "Push me" 
    


这不会让应用程序窗口缩放小于它包含的控件(因为隐式布局的宽度和高度等于所包含项目的隐式宽度和高度的总和)。

您还可以使用gridLayout.Layout.minimumWidth 绑定到布局的绝对最小宽度,如in the docs 所述。

【讨论】:

在撰写本文时还没有 ApplicationWindow 组件,但现在您的回复是正确的 @Stefano,对,我没看问的年份,只看月份:(【参考方案2】:
view.setMinimumSize(QSize(min-width,min-height));

【讨论】:

谢谢它的工作。只是一个问题:没有一种方法可以在 QML 文件中设置它吗?我认为那里会更合适,因为它是与图形相关的东西 我没用过qml。但是肯定会有属性 minimumsize 可以在 qml 文件中设置。

以上是关于QML 窗口最小宽度的主要内容,如果未能解决你的问题,请参考以下文章

你如何计算javascript中html表格的最小宽度?

设置 JavaScript 弹出窗口的最小尺寸

QML 项目未呈现

集成 Gstreamer Camera Output 窗口和 Qml 窗口

QT/QML 从主窗口重新打开新窗口

qml无框窗口的阴影