如何为动态创建的 QML 元素添加事件处理程序?

2024-03-15

我根据以下内容动态添加了一些 qml 组件到我的 gui 中这篇博文 http://kunalmaemo.blogspot.kr/2011/04/creating-qml-element-dynamically-on.html。如何为这些新创建的组件添加事件处理程序?


我将用一个例子来解释。 1)创建自定义按钮组件如下

//Button.qml ... This component's objects will be dynamically
// created
import QtQuick 2.1

Rectangle {
    width: 100
    height: 50
    color:"blue"
    //Since the buttons are created on the fly,
    //we need to identify the button on which the user
    // has clicked. The id must be unique
    property string buttonId;
    signal clicked(string buttonId);

    MouseArea {
        anchors.fill: parent
        onClicked:parent.clicked(parent.buttonId)
    }
}

这是一个简单的按钮,点击它会发出点击信号。 现在让我们动态创建一些按钮。

//Main.qml ... creates some buttons on the fly
import QtQuick 2.1
Rectangle{
    id:root
    width:500
    height:500

    function buttonClicked(buttonId)
    {
        console.debug(buttonId);
    }

    function createSomeButtons()
    {
        //Function creates 4 buttons
        var component = Qt.createComponent("Button.qml");
        for(var i=0;i<4;i++)
        {
            var buttonY = i*55; //Button height : 50 + 5 unit margin
            var button = component.createObject(root,{"x":0,"y":buttonY,"buttonId":i+1});

            //Connect the clicked signal of the newly created button
            //to the event handler buttonClicked.
            button.clicked.connect(buttonClicked)
        }
    }
    Component.onCompleted: {
        createSomeButtons();
    }
}

此处,当 Main.qml 组件创建完成后,将创建按钮。 创建了 4 个按钮,创建每个按钮后,javascript 函数 buttonClicked 作为事件处理程序连接到 '按钮.qml''s clicked信号。每当用户单击按钮时,按钮被点击函数将被调用buttonId作为论证。从现在开始,您可以在事件处理程序中执行任何您想要的操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为动态创建的 QML 元素添加事件处理程序? 的相关文章

  • 安装多个版本的 Qt 库

    我在windows中安装了QtSDK 它的Qt库版本是4 7 0 现在我想为 mingw 和 VS2008 安装 Qt 库版本 4 8 2 我怎样才能做到这一点 如何向QtCreator引入多个版本 注意 我已经从以下位置下载了库http
  • 如何将图标放置到 QLineEdit 上?

    stackoverflow com 网站的右上角有一个带有放大镜头的搜索字段和一个灰色的 搜索 关键字 我想知道是否有可能实现相同的外观QLineEdit 如果是这样那怎么办 QLineEdit lineEdit new QLineEdit
  • qt项目如何设置安装路径

    我正在寻找与 qmake configure prefix 等效的内容 基本上 我想覆盖默认的安装 部署目录 这是如何用命令行 qmake 指定的 我还使用 QtCreator 构建了很多 gui 项目 并且我想知道如何在 QtCreato
  • Qt 支持在 QIcon 中为 SVG 着色

    看来 Qt 不支持 SVG 中路径标签上的描边 填充选项
  • QTableView 中的虚拟列?

    我开始学习 Qt4 模型 视图编程 我有初学者问题 我有一个简单的应用程序 其中显示 sqlite 表QTableView class Model QtSql QSqlTableModel def init self parent None
  • Qt程序部署到多平台,如何?

    我是 Qt 编程新手 我想开发一个程序 我想在 Windows Linux ubuntu 和 Mac 上运行 听说Qt支持多平台应用程序开发 但我的问题是 在我部署或编译后 任何 Qt 库都需要在 Ubuntu 中运行这个应用程序吗 如果您
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • 使用 cmake 将两种解决方案合二为一

    我有两个单独的 Visual Studio 2013 解决方案 我想将它们迁移到一个解决方案中 因为第一个解决方案 使用 Qt 充当第二个解决方案的 GUI 最后 我希望有一个结构如下的单一解决方案 Solution All Build P
  • QT/QML Android App,点击通知栏时打开应用程序

    我为 Android 应用程序制作了一个 QT 当我单击平板电脑中上面看到的按钮通知栏时 但是 如果单击通知 我的应用程序将打开 聚焦 不知道 并显示黑色窗口 简单来说怎么做呢 我的代码是 package org ays operation
  • (如何)我可以抑制未找到包配置文件的警告吗?

    我正在尝试创建一个CMakeLists txt尝试查找的文件Qt5 如果失败 则尝试回退到Qt4安装 该脚本到目前为止有效 但如果出现以下情况我总会收到警告Qt5未安装 注意FindQt5 cmake是由提供Qt5并且仅当以下情况时才可用Q
  • QtCreator 调试暂停停在代码而不是汇编处

    如何配置 QtCreator 以便在调试并按下暂停时它会显示当前正在处理的代码 现在显示汇编 无法在任何地方找到有关此问题的答案 我使用的是 Windows 7 我在 Ubuntu 16 04 中使用 Qt Creator 4 2 2 时遇
  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要
  • 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

    我正在尝试根据阿波罗尼乌斯图生成加权沃罗诺伊 我正在使用 CGAL 库 我找不到如何从 apollonius 获取面和顶点的好例子 我有以下类型定义 typedef double NT typedef CGAL Cartesian lt N
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • QTimer 一点也不准确?

    运行在 Windows7 64 位机器上 具有非常强大的 CPU 8 核 16 线程 我使用 QTimer 以 50Hz 触发函数调用 但我最终得到了 30Hz 函数调用本身肯定需要不到 10 毫秒才能完成 整个过程发生在一个单独的线程中
  • PyQt5:如何使QThread返回数据到主线程

    I am a PyQt 5 4 1 1初学者 我的Python是3 4 3 这是我尝试遵循的many https mayaposch wordpress com 2011 11 01 how to really truly use qthr
  • Qml 模块未找到 CPP 类注册与新的 QML_ELEMENT r

    我尝试使用 Qt5 15 0 和新宏 QML ELEMENT 在 QML 中注册我的自定义 CPP 类 但找不到该模块 Qt Creater 帮助文件描述了 QML ELEMENT 的步骤 我也检查了 Qt 手册 但没有幸福的结局 http
  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set

随机推荐

  • 类不符合RequestRetrier协议

    我一直在将我的项目迁移到 swift3 并一直在努力让 Alamofire RequestRetrier 协议正常工作 我遵循 Alamofire 4 0 迁移指南 https github com Alamofire Alamofire
  • 使用 @OneToOne 和 @OneToMany 时如何使 Hibernate OUTER JOIN

    假设我有一张名为employee与领域employee id name and supervisor id and employee supervisor与领域supervisor id and name 存在外键关系employee an
  • Docker:如何对 docker Push 进行身份验证?

    嗨 我正在尝试docker push docker simple httpserver docker push myregistry simplehttpserver latest The push refers to a reposito
  • 活动管理日期过滤器日期格式自定义

    是否有简单的方法可以更改 ActiveAdmin 日期过滤器显示格式的默认 ISO 格式 yyyy mm dd 您可以向日期选择器提供额外的选项 而不是覆盖 js 如下所示 f input my date as datepicker dat
  • 禁用 Android WebView WebRTC

    Fresh Cromium WebView 支持 WebRTC 但我想禁用它 Chrome 应用程序可以允许在 Chrome 中执行此操作 因此这似乎并非不可能 我进行了很多研究 但没有找到合适的解决方案 任何帮助 将不胜感激 更新 仍未解
  • 快速显示所有 Firebase 用户的帖子

    我需要使用 firebase 作为后端创建一个 UISearchController 我目前在 firebase 中有两个用户 一名用户发布了一篇帖子 另一名用户发布了四篇帖子 我希望能够搜索我的数据库中所有书籍的标题 共有五本书 但是 到
  • 在node.js中使MySQL的ORDER BY动态化

    我想做ORDER BYNode js 中的 mysql 查询是动态的 但这不起作用 我console logmultiQuery 变量和一切看起来都很完美 但运行时它根本不起作用 这就是我所拥有的 var order multiQuery
  • Oracle SELECT - 双引号还是没有双引号? [复制]

    这个问题在这里已经有答案了 All 在为 Oracle 11i 数据库编写 SELECT 查询时 为什么 Oracle 中的某些表强制对所选字段应用引号 而其他表则不然 举个我最近遇到的例子 在 Aqua Data Studio 的查询分析
  • 如何在真实设备(移动设备)上开发Windows 10 UWP?

    我正在尝试在真实设备上调试我的应用程序 带有 Windows 10 Mobile 10 0 10581 0 的 lumia 830 开发者模式在两种设备 移动设备和 PC 上均处于开启状态 但是当我尝试在设备上模拟应用程序时 出现错误 DE
  • Rails ActionMailer 编码

    Setup Ruby 1 9 2 Rails 3 2 2 我的电子邮件编码遇到一些问题 注意 我对编码之类的东西不太熟悉 使用 ActionMailer 发送电子邮件时 电子邮件中的 html 出现了一些奇怪的情况 所有等号 都更改为 3D
  • 如何更改MySQL表的默认字符集?

    有一个MySQLtable这个定义取自SQLYog Enterprise Table Create Table etape prospection CREATE TABLE etape prospection etape prosp id
  • .h 是从 .h.in 生成的吗?

    我的库在构建后创建的 h 文件中有结构定义 但我在相应的 h in 中找不到这些定义 有人可以告诉我这一切是如何工作的以及它从哪里获取额外信息吗 具体来说 我正在构建 pth 用户空间线程库 它有 pth p h in 它不包含我正在寻找的
  • Pycharm-无法安装opencv

    我是 PyCharm 的新手 并尝试了解如何安装 openCV 包以及后来的 cv2 包 我在这里看到一个旧的讨论 建议首先从 internet 下载 openCV 然后更新系统解释器 我下载了 openCV 并将其放置在我管理项目的同一目
  • Fluentd 是否支持文件输出的日志轮换?

    我当前使用的设置是具有多个容器的 Docker 组合堆栈 这些容器将其日志记录信息发送到运行 Fluentd 守护进程的日志记录容器 在 compose 堆栈内 Fluentd 的配置包括一in forward收集日志并将其写入单独文件的源
  • 模拟/存根“super”调用

    我想模拟一下super调用 尤其是某些 ES6 类中的构造函数 例如 import Bar from bar class Foo extends Bar constructor opts super opts someFunc super
  • GitHub 上隐藏的 Markdown 文本

    GitHub 上有专门的 Markdown 语法来支持隐藏文本吗 我只是想把一些待办事项记在里面README md为了我自己 不让别人看到 EXTRAS 为了致敬 Tamas 的出色回答 以及人们多次提出的问题 下面是如何在 MD 文件中编
  • C++11 中缺少 std::u8string

    为什么 C 11 提供std u16string and std u32string并不是std u8string 我们需要实现utf 8编码还是使用额外的库 C 20 添加char8 t and std u8string http www
  • MySQL 8.0 升级后特定查询性能不佳

    编辑 我在 Python 中看到与 PHP 相同的行为 好像和MySQL有关 我们正在尝试从 MySQL 5 7 升级到 8 0 我们的代码库使用 PHP MySQLi 来查询 MySQL 服务器 在我们的测试设置中 我们发现绑定大量参数的
  • 添加推送通知时出现无效权利错误

    我正在尝试按照本教程向我的聊天应用程序添加推送通知 https www appcoda com firebase push notifications https www appcoda com firebase push notifica
  • 如何为动态创建的 QML 元素添加事件处理程序?

    我根据以下内容动态添加了一些 qml 组件到我的 gui 中这篇博文 http kunalmaemo blogspot kr 2011 04 creating qml element dynamically on html 如何为这些新创建