Qt5 QML,为什么在不更改的情况下调用onHeightChanged和onWidthChanged?

jkj yuio
import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.2

ApplicationWindow
{
    visible: true
    width: 640
    height: 480

    property int lastW: 0
    property int lastH: 0

    function doSomething()
    {
        if (lastW == width && lastH == height)
            console.log("width & height same as last time")

        lastW = width;
        lastH = height;
    }

    onHeightChanged: doSomething();
    onWidthChanged: doSomething();
}

为什么doSomething调用时宽度和高度没有变化(开始时除外)。当我调整窗口大小时,会收到控制台日志消息。

运行Windows 8.1

菲利普·哈祖布斯基(Filip Hazubski)

doSomething运行每次width heightApplicationWindow变化。该窗口可能会同时更改两个尺寸的大小。如果一瞬间大小从100x100变为101x101,则两个信号widthChangedheightChanged将针对width=101发出height=101这就是为什么console.log("width & height same as last time")尽管乍一看这永远不会发生的事实,却仍在执行它的原因


doSomething开始运行时发表评论对我来说,doSomething除非调整窗口大小,否则永远不会触发。如果对您而言,它确实在应用程序启动时启动,则可能是因为在短时间内它ApplicationWindow具有一些初始大小(例如0x0),然后它立即将大小更改为640x480并开始doSomething运行。


在某些罕见的情况下,我上面编写的内容可能无效。您可以尝试ApplicationWindow仅在一个维度上调整大小,但有时changed对于相同的值有时会出现两次信号。我的猜测是,在这些情况下,值变化如此之快,以至于changed在QML中触发两次时,您仅读取第二个值。

我怀疑它是这样工作的:width=100然后迅速将value更改为101fires changed,更改为102并再次changed触发。之后,将执行QML信号。现在您会收到两个changed信号,但是两者都读取了value 102

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qt5 QML,为什么在不更改的情况下调用onHeightChanged和onWidthChanged?

来自分类Dev

Qt5 QML ListView内容缩放

来自分类Dev

qt5 qml c ++交互

来自分类Dev

QT5更改平面样式颜色

来自分类Dev

CMake和Qt5 AUTOMOC错误

来自分类Dev

Qt5安装和路径配置

来自分类Dev

QT5中的信号和插槽

来自分类Dev

Qt5和CMAKE_AUTORCC

来自分类Dev

Qt5,cmake和MinGW

来自分类Dev

CMake和Qt5链接错误

来自分类Dev

Qt4和Qt5上的QWebView

来自分类Dev

为什么在使用QT5时收到以下错误?

来自分类Dev

为什么在使用QT5时收到以下错误?

来自分类Dev

为什么Qt5中的sqlite查询这么慢?

来自分类Dev

带有qt5的无框窗户(qml)

来自分类Dev

部署Qt5 QML应用程序

来自分类Dev

带有qt5(qml)的无框窗户

来自分类Dev

使用qml从qt5发布HTTP请求

来自分类Dev

QML QT5中如何显示分配的属性组件?

来自分类Dev

QT5:多次实例化相同的 QML 组件

来自分类Dev

适用于Android的Qt5:不兼容的ABI

来自分类Dev

Qt5 tr()宏不翻译文本

来自分类Dev

Qt5 Moc不生成文件

来自分类Dev

Lyx 不工作(可能与 Qt5 相关)

来自分类Dev

Qt5 :: QFileSystemWatcher在文件修改时调用

来自分类Dev

在Qt5中更改QGraphicsScene / View中的Pixmap位置

来自分类Dev

Qt5标签更改的文本显示已损坏

来自分类Dev

在Qt5中更改QGraphicsScene / View中的Pixmap位置

来自分类Dev

动态更改 qt5 选项卡名称