QML窗口最小宽度

时间:2012-06-01 06:39:09

标签: qt text qt4 qml

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

2 个答案:

答案 0 :(得分:3)

view.setMinimumSize(QSize(min-width,min-height));

答案 1 :(得分:2)

我不知道你正在使用哪个版本的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" }
    }

}

这不会让app窗口缩小比它包含的控件小(因为隐式布局的宽度和高度等于包含的项隐式宽度和高度的总和)。

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