3

我正在使用 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();
}
4

2 回答 2

5

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

import QtQuick 2.0

ApplicationWindow {
    id: appWnd
    minimumWidth: 300
    minimumHeight: 300
}

您还可以查看每个特定 QML 类型的implicitWidth属性implicitHeight,并将appWndminimumWidth/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,如文档中所述

于 2014-08-26T11:42:32.297 回答
3
view.setMinimumSize(QSize(min-width,min-height));
于 2012-06-01T06:47:10.473 回答