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

http://edu.csdn.net/course/detail/1042/14806?auto_start=1

Qt Quick 4小时入门

第七章:处理鼠标与键盘事件

1、处理鼠标事件

鼠标信号传递一个MouseEvent类型的mouse参数


import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtQuick.Window 2.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    // 处理鼠标事件示例
    MouseArea {
        anchors.fill: parent; // 在哪个区域之内接收鼠标事件
        acceptedButtons: Qt.LeftButton | Qt.RightButton; // 鼠标的左键和右键事件
        onClicked: {
            if (mouse.button == Qt.LeftButton) {
                txt.text = "您点击了左键。";
            } else if (mouse.button == Qt.RightButton) {
                txt.text = "您点击了右键。";
            }
        }

        onDoubleClicked: {
            if (mouse.button == Qt.LeftButton) {
                txt.text = "您双击了左键。";
            } else if (mouse.button == Qt.RightButton) {
                txt.text = "您双击了右键。";
            }
        }
    }
}

2、处理键盘事件


import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtQuick.Window 2.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    // 处理键盘事件示例
    Text {
        id: txt;
        text: "齐天大圣";
        width: 60*8;
        font.pointSize: 50;
        x: 100;
        y: 200;
        //anchors.centerIn: parent; // 如果执行下面的代码改变文本的位置,那么不能使用锚布局
        // Window对象不能处理按键事件,需要放到一个Item对象里
        Keys.onLeftPressed: x -= 10;
        Keys.onRightPressed: x += 10;
        Keys.onUpPressed: y -= 10;
        Keys.onDownPressed: y += 10;
        focus: true; // 只有拥有焦点的Item才能处理按键事件
    }
}

Keys是一个附加属性

QML中的属性就是C++中的成员变量。

属性的类型:

(1)基本类型

(2)id属性:可以在其他对象或脚本中通过id引用本对象

(3)列表属性

(4)信号处理器

(5)分组属性:

Text {

font { pixelSize: 12; bold: true; }

}

(6)附加属性

来自为知笔记(Wiz)

时间: 2024-10-25 06:54:04

《Qt Quick 4小时入门》学习笔记4的相关文章

C PRIMER PLUS 学习笔记(一)

1显示程序执行的窗口一闪即逝.可以添加如下语句: getchar() 作用是获取键盘输入. 2 inf 和 nan float toobig = 3.4e38 * 100.0f; float not_a_number = asin(1.2);//math.h printf("%e \t %e\n", toobig,not_a_number); inf-表示无穷大,nan-Not-a-number 3 long double 的输出格式 long double x; x = 3.2e-5

C++ Primer Plus学习笔记之虚函数

C++ Primer Plus学习笔记之虚函数 C++语言的多态性有两种类型:静态多态性和动态多态性.函数重载和运算符重载就是静态多态性的具体表现,而动态多态性是指程序运行过程中才动态的确定操作所针对的对象,它是通过虚函数实现的: 1,虚函数的概念: 一个指向基类的指针可用来指向从基类派生的任何对象,这样就可以达到一个接口多个实现的访问了:虚函数是在基类中被冠以virtual的成员函数,它提供了一种接口界面.虚函数可以在一个或者多个派生类中被重新定义,但要求在派生类中从新定义时,虚函数的函数原型

C++ Primer Plus学习笔记之静态成员

C++ Primer Plus学习笔记之静态成员 关键字static可以用来说明一个类的成员(包括数据成员和成员函数),这样的成员被称为静态成员: 1,静态数据成员 在一个类中,若将一个数据说明前加上static,则该数据成为静态数据,静态数据成员被该类的所有对象共享.无论建立多少个该类的对象,都只有一个静态数据存储空间: 具体语法如下: 类型名 类名::静态数据成员[=常量表达式] 其中,常量表达式用于初始化类的静态数据成员: 静态数据成员属于类,而不属于对象,因为静态成员的存在是不依赖于某个

C++ Primer Plus学习笔记之继承类的初始化顺序

C++ Primer Plus学习笔记之继承类的初始化顺序 基类的构造函数,析构函数和操作符函数operator=是不能被派生类继承的: 那么,当创建一个派生类对象时,怎样调用基类的构造函数对基类的数据进行初始化呢??? 答案是:构造函数执行时遵行先兄长(基类),再客人(对象成员),后自己(派生类)的顺序: 另一方面,执行析构函数时,先执行派生类的析构函数,再执行基类的析构函数.原因是,对基类的破坏隐含了对派生类的破坏,所以派生类的析构函数必须先执行: #include<iostream> u

C++ Primer Plus学习笔记之运算符重载

C++ Primer Plus学习笔记之运算符重载 1,成员函数和友元函数选择的建议 下面我们先看两个例子: 成员函数重载 #include<iostream> using namespace std; class Complex { public: Complex(double r=0,double i=0) { re=r; im=i; } Complex operator+(const Complex& obj); Complex operator!(); void Display

C++ Primer Plus学习笔记之拷贝构造函数

C++ Primer Plus学习笔记之拷贝构造函数 1,什么是拷贝构造函数 拷贝构造函数有两个含义: 首先,它是一个构造函数,当创建一个新对象时,系统自动调用它: 其次,它将一个已经定义过的对象的数据成员逐一对应的复制给新对象: 如果一个类没有显式定义拷贝构造函数,C++编译器可以为该类产生一个缺省的拷贝构造函数.这个缺省的拷贝构造函数采用C的方式,将拷贝对象的内存一个字节一个字节的拷贝到拷贝对象的内存中(内存拷贝): 2,拷贝构造函数的作用 (1)创建一个新对象,并将一个已存在的对象拷贝到这

c++ primer plus学习笔记(栈指针)

c++ primer plus 程序清单14.5 程序清单14.6 模拟如下情况: 某人将一车文件交给plodson,如果plodson的收取蓝是空的,他将取出车中最上面的文件,将它放入收 取蓝,如果收取蓝是满的,他将取出栏中最上面的文件,并进行处理,然后放入发出蓝,如果收取蓝不空不满 plodson将采用抛硬币的方式来决定采取措施. 很明显,我们需要使用栈去管理上述文件. 1 #ifndef STACK_H_ 2 #define STACK_H_ 3 4 //定义类模板 5 template

《c++primer》学习笔记

花了一个多月时间总算是把这本书看完了,再去看自己家游戏的服务器的代码还是很难懂,里面用到了好多boost库的东西,不过这些东西很多都已经加入了c++11的新标准里了,要到自己能做服务器还得接着学,所以接下来的一个月开始看<C++标准库>. 把看<c++primer>的时候抄的笔记先誊在这里方便以后参考. #include 来自标准库的头文件使用<> 来自非标准库的头文件使用"" ------------------------------------

c++ primer plus 学习笔记

我的机子用Xcode,单位是字节 0开头为8进制 0x为16进制 cout默认输出的是10进制 wchar_t 宽字节,它是一种足够大的整形类型,可以用来表示的是比如中文的编码 c常量一旦被定义,就不能被修改(const) 浮点数,c++中浮点数在计算内存中由两部分组成,一部分为基数,一部分用来表示浮点,这个浮点是用二进制来表示. 非常大或者非常小的数可以用e表示法来表示 这个程序充分说明了精度的问题,double能保存更高的精度.对于c++来说float只能保存6位有效数字,如果需要更高的精度

《C++ Primer》学习笔记【第一部分 基本语言】

第2章 整型的赋值:当我们试着把一个超出其范围的值赋给一个指定类型的对象时,结果如何?答案取决于类型是signed还是unsigned的.对于unsigned,编译器会将该值对unsigned类型的可能取值数目求模然后取所得值:对于signed类型,未定义行为,很多处理器处理方式和unsigned类似. 字符串字面值的连接:std::cout << "multi-line" L"literal " << std::endl;结果未定义,即连接