/*********************************************************************************************
* Qt Quick Hello World hacking
* 说明:
* 本代码是Qt生成Quick应用程序的时候自动生成Hello World程序;
*
* 2015-5-17 深圳 晴 南山平山村 曾剑锋
********************************************************************************************/ \\\\\\\\\-*- 目录 -*-/////////
| 一、main.cpp
| 二、main.qml
| 三、MainForm.ui.qml
\\\\\\\\\\\\\\\////////////// 一、main.cpp
#include <QApplication>
#include <QQmlApplicationEngine> int main(int argc, char *argv[])
{
/**
* The QApplication class manages the GUI application's control flow and main settings.
* 初始化并配置GUI界面环境
*/
QApplication app(argc, argv); /**
* QQmlApplicationEngine provides a convenient way to load an application from a single QML file.
* 创建QML引擎(engine)
*/
QQmlApplicationEngine engine;
/**
* QStringLiteral: Creating a QString from it is free in this case, and the generated string data
* is stored in the read-only segment of the compiled object file.
* 这是一个宏,用于创建一个字符串,该字符串存放在自读数据区
* QUrl: The most common way to use QUrl is to initialize it via the constructor by passing a QString.
* Otherwise, setUrl() can also be used.
* 最常用于初始化一个QUrl的是给其构造函数传一个字符串,此外也可以使用setUrl()
* engine.load: Loads the root QML file located at filePath:.
* 加载用QML引擎加载要显示的界面
*/
engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); /**
* Enters the main event loop and waits until exit() is called.
* 进入主事件循环,并等待直到exit()函数被调用
*/
return app.exec();
} 二、main.qml
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2 /**
* ApplicationWindow is a Window that adds convenience for positioning items, such as MenuBar, ToolBar,
* and StatusBar in a platform independent manner.
* 被main.cpp调用,显示的主窗口
*/
ApplicationWindow {
title: qsTr("Hello World") //窗口的标题: Hello World
width: //窗口宽:640(单位不知道)
height: //窗口高:480(单位不知道)
/**
* Note: By default, an ApplicationWindow is not visible.
* 窗口设为可见
*/
visible: true /**
* 为窗口添加菜单栏,我怎么感觉应该叫菜单条 :)
*/
menuBar: MenuBar {
/**
* 观察这里,同一级别只有一个Menu,也就意味着这个菜单只有一个菜单选项
*/
Menu {
title: qsTr("&File") //唯一的一个菜单的名字叫:File。你可以通过Alt+F快捷键来操作
/**
* 观察这里,同一级别,有两个子菜单选项
*/
MenuItem {
text: qsTr("&Open") //第一个子菜单的名字是:Open。你可以通过Alt+O快捷键来操作
/**
* 1. onTriggered: 是代表点击了一次Open这个子菜单
* 2. messageDialog.show: 代表会弹出信息框
* 3. qsTr: Wherever your script uses "quoted text" for text that will be presented to the user,
* ensure that it is processed by the QCoreApplication::translate() function. Essentially
* all that is necessary to achieve this is to use the qsTr() script function.
* 意思也就是说如果你要显示字符串,就用这个函数处理一下再显示的意思
*/
onTriggered: messageDialog.show(qsTr("Open action triggered"));
}
MenuItem {
text: qsTr("E&xit") //第一个子菜单的名字是:Exit。你可以通过Alt+E快捷键来操作
onTriggered: Qt.quit(); //退出
}
}
} /**
* 这里其实是去找同一级目录下的MainForm.ui.qml文件,而MainForm.ui.qml文件中必须是一个Item类型的控件
*/
MainForm {
anchors.fill: parent //设置填充方式
/**
* 设置MainForm.ui.qml中3个按键的单击事件,弹一个信息框
*/
button1.onClicked: messageDialog.show(qsTr("Button 1 pressed"))
button2.onClicked: messageDialog.show(qsTr("Button 2 pressed"))
button3.onClicked: messageDialog.show(qsTr("Button 3 pressed"))
} MessageDialog {
id: messageDialog //消息对话框的变量名
title: qsTr("May I have your attention, please?") //信息框的标题 /**
* 我个人认为这是动态绑定一个函数,这个函数是显示函数(show)
*/
function show(caption) {
messageDialog.text = caption; //信息框显示的内容
messageDialog.open(); //让信息框显示
}
}
} 三、MainForm.ui.qml
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Layouts 1.1 /**
* All visual items in Qt Quick inherit from Item. Although an Item object has no visual appearance,
* it defines all the attributes that are common across visual items, such as x and y position,
* width and height, anchoring and key handling support.
*
* The Item type can be useful for grouping several items under a single root visual item.
* 个人感觉Item相当于是一个容器
* Rectangle items are used to fill areas with solid color or gradients, and/or to provide a rectangular border.
* 这里个人尝试了将Item换成Rectangle,没什么很大的变化,能够正常的显示,不过还是建议使用Item,因为貌似Rectangle更适合做有边框效果的事。
*/
Item {
width: //宽:640(单位未知)
height: //高:480(单位未知) /**
* Property aliases are properties which hold a reference to another property.
* 别名属性设置,并设置对应的值,主要是为了方便外部引用
*/
property alias button3: button3
property alias button2: button2
property alias button1: button1 /**
* 这里采用列布局
*/
RowLayout {
anchors.centerIn: parent //对齐方式:居中 /**
* 接下来放置3个按钮(Button)
*/
Button {
id: button1 //按钮的变量名
text: qsTr("Press Me 1") //按钮的显示文字
} Button {
id: button2
text: qsTr("Press Me 2")
} Button {
id: button3
text: qsTr("Press Me 3")
} }
}

Qt Quick Hello World hacking的更多相关文章

  1. 《Qt Quick 4小时入门》学习笔记4

    http://edu.csdn.net/course/detail/1042/14806?auto_start=1 Qt Quick 4小时入门 第七章:处理鼠标与键盘事件 1.处理鼠标事件 鼠标信号 ...

  2. 《Qt Quick 4小时入门》学习笔记3

    http://edu.csdn.net/course/detail/1042/14807?auto_start=1 Qt Quick 4小时入门 第八章:Qt Quick中的锚(anchors)布局 ...

  3. 《Qt Quick 4小时入门》学习笔记2

    http://edu.csdn.net/course/detail/1042/14805?auto_start=1   Qt Quick 4小时入门 第五章:Qt Quick基本界面元素介绍   1. ...

  4. 《Qt Quick 4小时入门》学习笔记

    http://edu.csdn.net/course/detail/1042/14804?auto_start=1   Qt Quick 4小时入门 第五章:Qt Quick里的信号与槽   QML中 ...

  5. 从头学Qt Quick(3)-- 用QML写一个简单的颜色选择器

    先看一下效果图: 实现功能:点击不同的色块可以改变文字的颜色. 实现步骤: 一.创建一个默认的Qt Quick工程: 二.添加文件Cell.qml 这一步主要是为了实现一个自定义的组件,这个组件就是我 ...

  6. 从头学Qt Quick(1) --体验快速构建动态效果界面

    自2005年Qt4发布以来,Qt已经为成千上万的应用程序提供了框架服务,现在Qt已经基本上支持所有的开发平台了,这里面既包含了桌面.嵌入式领域,也包括了Android.IOS.WP等移动操作平台,甚至 ...

  7. Qt 控制watchdog app hacking

    /************************************************************************** * Qt 控制watchdog app hack ...

  8. Qt Quick实现的涂鸦程序

    之前一直以为 Qt Quick 里 Canvas 才干够自绘.后来发觉不是,原来还有好几种方式都能够画图! 能够使用原始的 OpenGL(Qt Quick 使用 OpenGL 渲染).能够构造QSGN ...

  9. Qt Quick实现的疯狂算数游戏

    使用 Qt Quick 写了个小游戏:疯狂算数.支持 Windows 和 Android 两个平台. 游戏简单,但牵涉到下面你的 Qt Quick 主题: 自己实现一个按钮 自适应分辨率 国际化 QM ...

随机推荐

  1. 简单了解SQL(结构化查询语言)

    简单了解SQL(结构化查询语言) 年10月,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际 ...

  2. django模型和字段

    一个模型(model)就是一个单独的.确定的数据的信息源,包含了数据的字段和操作方法.通常,每个模型映射为一张数据库中的表. 基本的原则如下: 每个模型在Django中的存在形式为一个Python类 ...

  3. 在每个节点填充向右的指针 Populating Next Right Pointers in Each Node

    2018-08-09 16:01:40 一.Populating Next Right Pointers in Each Node 问题描述: 问题求解: 由于是满二叉树,所以很好填充. public ...

  4. m_Orchestrate learning system---三十四、使用重定义了$的插件的时候最容易出现的问题是什么

    m_Orchestrate learning system---三十四.使用重定义了$的插件的时候最容易出现的问题是什么 一.总结 一句话总结:如下面这段代码,定义了$的值,还是会习惯性的把$当成jQ ...

  5. 在 Confluence 6 中的 Jira 权限

    只读(Read Only) 从你 JIRA 应用服务器上取得的用户,用户组和用户组成员.这些用户的信息只能通过你的 JIRA 服务器进行修改. https://www.cwiki.us/display ...

  6. 『cs231n』RNN之理解LSTM网络

    概述 LSTM是RNN的增强版,1.RNN能完成的工作LSTM也都能胜任且有更好的效果:2.LSTM解决了RNN梯度消失或爆炸的问题,进而可以具有比RNN更为长时的记忆能力.LSTM网络比较复杂,而恰 ...

  7. 在oaf中集成SpringLoaded实现热部署

    首先声明:其实JRebel和Spring-Loaded就是一个开发环境下的利器,skip build and redeploy process,大大提升了工作效率!而非生产环境的利器... 不要在生产 ...

  8. springmvc基础流程

    转载:http://blog.csdn.net/zuoluoboy/article/details/19766131 注意:springmvc多个拦截器执行流程:每个拦截器的方法preHandler顺 ...

  9. 使用GAN进行异常检测——可以进行网络流量的自学习哇,哥哥,人家是半监督,无监督的话,还是要VAE,SAE。

    实验了效果,下面的还是图像的异常检测居多. https://github.com/LeeDoYup/AnoGAN https://github.com/tkwoo/anogan-keras 看了下,本 ...

  10. Intel daal4py demo运行过程

    daal安装(记得先安装anaconda): git clone https://github.com/IntelPython/daal4py.git cd daal4py conda create ...