Qt 如何设置QML小部件的最小大小?

Qt 如何设置QML小部件的最小大小?,qt,qml,qtquick2,Qt,Qml,Qtquick2,我正在使用QDeclarativeView来显示QML小部件。如何设置QDeclarativeView/widget的最小高度,使其不会变小?我希望能够将其绑定到子窗口小部件的最小大小,这样窗口小部件就不会重叠,并且所有内容都保持适当的间隔。步骤1:以QML定义最小大小 首先,在主窗口小部件中,创建两个属性来保存最小宽度和高度: property int minWidth: <whatever> property int minHeight: <whatever> 然后

我正在使用
QDeclarativeView
来显示QML小部件。如何设置
QDeclarativeView
/widget的最小高度,使其不会变小?我希望能够将其绑定到子窗口小部件的最小大小,这样窗口小部件就不会重叠,并且所有内容都保持适当的间隔。

步骤1:以QML定义最小大小 首先,在主窗口小部件中,创建两个属性来保存最小宽度和高度:

property int minWidth: <whatever>
property int minHeight: <whatever>
然后,当您创建
QDeclarativeView
时:

void onMinimumWidthChanged() {
    view->setMinimumWidth(view->rootObject()->property("minWidth").toInt());
}

void onMinimumHeightChanged() {
    view->setMinimumHeight(view->rootObject()->property("minHeight").toInt());
}
QDeclarativeView *view = new QDeclarativeView(this);
view->setResizeMode(QDeclarativeView::SizeRootObjectToView);
view->setSource(/* Whatever */);
QDeclarativeProperty(view->rootObject(), "minWidth").connectNotifySignal(this, SLOT(onMinimumWidthChanged()));
QDeclarativeProperty(view->rootObject(), "minHeight").connectNotifySignal(this, SLOT(onMinimumHeightChanged()));
onMinimumWidthChanged();
onMinimumHeightChanged();

现在,
QDeclarativeView
的最小大小将绑定到主QML小部件中定义的最小大小。如果您在QML中的任何位置更改最小大小,则
QDeclarativeView
的最小大小也将更改。

iBelevie的解决方案是可靠的,但有点过分。QML在某种程度上是CSS,支持内联javascript。我希望您现在知道这将走向何方:)
只需将属性定义为条件语句:
height:(root.height
。它不是光滑的固溶体,但至少是标记内部的一层。我把它留给读者去思考它是否好

QDeclarativeView *view = new QDeclarativeView(this);
view->setResizeMode(QDeclarativeView::SizeRootObjectToView);
view->setSource(/* Whatever */);
QDeclarativeProperty(view->rootObject(), "minWidth").connectNotifySignal(this, SLOT(onMinimumWidthChanged()));
QDeclarativeProperty(view->rootObject(), "minHeight").connectNotifySignal(this, SLOT(onMinimumHeightChanged()));
onMinimumWidthChanged();
onMinimumHeightChanged();