Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QML窗口最小宽度_Qt_Text_Qt4_Qml - Fatal编程技术网

Qt QML窗口最小宽度

Qt QML窗口最小宽度,qt,text,qt4,qml,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/ma

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

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

import QtQuick 2.0

ApplicationWindow {
    id: appWnd
    minimumWidth: 300
    minimumHeight: 300
}
您还可以查看每个特定QML类型的
implicitWidth
implicitHeight
属性,并将
appWnd
最小宽度/高度设置为包含布局的implicitWidth/高度。例如:

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
绑定到版面的绝对最小宽度,如前所述。

谢谢,它可以工作。只是一个问题:在QML文件中没有设置它的方法吗?我认为这更合适,因为这是一个与图形相关的东西,我没有使用qml。但是可以肯定的是,qml文件中会有可以设置的属性minimumsize。在撰写本文时,没有ApplicationWindow组件,但是现在您的回答是正确的one@Stefano,是的,我没有看那一年的提问,只有一个月:(
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" }
    }

}