QT开发(五十五)———Qt Quick Controls

QT开发(五十五)———Qt Quick Controls

一、Qt Quick Controls基础

QT5.1发布了Qt Quick的一个全新模块:Qt Quick Controls。Qt Quick Controls模块提供了大量类似Qt Widgets模块的可重用组件。

为了开发基于Qt Quick Controls的程序,需要创建一个Qt Quick Application类型的应用程序,选择组件集的时候注意选择Qt Quick Controls。

二、Qt Quick Controls组件

Qt Quick Controls 提供了多种组件。

1、应用程序窗口

应用程序窗口是用于描述应用程序的基本窗口属性的组件。


ApplicationWindow


对应QMainWindow,提供顶层应用程序窗口


MenuBar


对应QMenuBar,提供窗口顶部横向的菜单栏


StatusBar


对应QStatusBar,提供状态栏


ToolBar


对应QToolBar,提供工具栏,可以添加ToolButton和其它组件


Action


对应QAction,提供能够绑定到导航和视图的抽象的用户界面动作

2、导航与视图

便于用户在一个布局中管理和显示其它组件


ScrollView


对应QScrollView,提供滚动视图


SplitView


对应QSplitter,提供可拖动的分割视图布局


StackView


对应QStackedWidget,提供基于栈的层叠布局


TabView


对应QTabView,提供带有标签的基于栈的层叠布局


TableView


对应QTableView,提供带有滚动条、样式和表头的表格


TreeView


对应QTreeView,提供带有滚动条、样式和表头的表格

3、控件

控件用于控件用于表现或接受用户输入


BusyIndicator


提供忙等示意组件


Button


对应QPushButton,提供按钮组件


CheckBox


对应QCheckBox,提供复选框


ComboBox


对应QComboBox,提供下拉框


GroupBox


对应QGroupBox,提供带有标题、边框的容器


Label


对应QLabel,提供标签组件


ProgressBar


对应QProgressBar,提供进度条组件


RadioButton


对应QRadioButton,提供单选按钮


Slider


对应QSlider,提供滑动组件


SpinBox


对应QSpinBox,提供微调组件


Switch


提供类似单选按钮的开关组件


TextArea


对应QTextEdit,提供能够显示多行文本的富文本编辑框


TextField


对应QTextLine,提供显示单行文本的纯文本编辑框


ToolButton


对应QToolButton,提供在工具栏上显示的工具按钮


ExclusiveGroup


提供互斥

4、菜单

用于构建菜单的组件


Menu


对应QMenu,提供菜单、子菜单、弹出菜单等


MenuSeparator


提供菜单分隔符


MenuItem


提供添加到菜单栏或菜单的菜单项


StatusBar


对应QStatusBar,提供状态栏


ToolBar


对应QToolBar,提供工具栏,可以添加ToolButton和其它组件

三、Qt Quick Controls应用程序实例

Main.qml文件:

import QtQuick 2.6
import QtQuick.Controls 1.4
 
ApplicationWindow
{
    title: qsTr("NotePad")
    width: 640
    height: 480
    Action
    {
        id: exitAction
        text: qsTr("E&xit")
        onTriggered: Qt.quit()
    }
    Action
    {
        id: newAction
        text: qsTr("New")
        iconSource: "images/new.png"
        onTriggered:
        {
            textArea.text = "";
        }
    }
    Action
    {
        id: cutAction
        text: qsTr("Cut")
        iconSource: "images/cut.png"
        onTriggered: textArea.cut()
    }
    Action
    {
        id: copyAction
        text: qsTr("Copy")
        iconSource: "images/copy.png"
        onTriggered: textArea.copy()
    }
    Action
    {
        id: pasteAction
        text: qsTr("Paste")
        iconSource: "images/paste.png"
        onTriggered: textArea.paste()
    }
    Action
    {
        id: selectAllAction
        text: qsTr("Select All")
        onTriggered: textArea.selectAll()
    }
    menuBar: MenuBar
    {
        Menu
        {
            title: qsTr("&File")
            MenuItem { action: newAction }
            MenuItem { action: exitAction }
        }
        Menu
        {
            title: qsTr("&Edit")
            MenuItem { action: cutAction }
            MenuItem { action: copyAction }
            MenuItem { action: pasteAction }
            MenuSeparator {}
            MenuItem { action: selectAllAction }
        }
    }
    toolBar: ToolBar
    {
        Row
        {
            anchors.fill: parent
            ToolButton { action: newAction }
            ToolButton { action: cutAction }
            ToolButton { action: copyAction }
            ToolButton { action: pasteAction }
        }
    }
    TextArea
    {
        id: textArea
        anchors.fill: parent
    }
}

ApplicationWindow是应用程序的主窗口,提供了很多预定义的功能,比如菜单、工具栏等。qsTr()函数类似于tr()函数,用于国际化。

menuBar和toolBar两个属性都是ApplicationWindow提供的属性。menuBar是MenuBar类型的。MenuBar具有层次结构,是通过Menu的嵌套实现的。每一个菜单项都是用MenuItem实现的;菜单项之间的分隔符则使用MenuSeparator控件。

toolBar是Item类型的,通常都会使用ToolBar控件。ToolBar默认没有提供布局,必须给它设置一个布局。直接添加了一个Row,作为横向工具栏的布局。工具栏要横向充满父窗口,设置锚点为anchors.fill: parent。虽然ToolBar设置的是充满整个父窗口,但如果ToolBar只有一个子元素(比如这里的Row),那么工具栏的高度将被设置为子元素的implicitHeight属性,这对结合布局使用非常有用。

每一个MenuItem和ToolButton都添加了一个action属性。

使用iconSource属性可以指定图标。图标只能是位于文件系统中的,不能加载资源文件中的图标(如果将整个QML文档放在资源文件中,就可以直接加载资源文件中的图标)。当直接使用“images/new.png”路径时,注意QML是运行时解释的,这个路径是相对于QML文件的路径。图标需要放在与main.qml文件同目录下的images目录中。

onTriggered属性是一种信号处理函数,后面可以添加JavaScript 语句。如果是多条语句,可以使用大括号,例如newAction的onTriggered。QML组件可以发出信号,与C++不同的是,QML组件的信号并不需要特别的连接语句,而是使用“on信号名字”的形式。Action有一个名为triggered的信号,则其信号处理函数即为onTriggered。这种简单的信号槽实现的局限在于同一个信号只能有一个固定名字的信号处理函数。当然,也可以使用 connect 连接语句。

时间: 2024-12-23 17:12:23

QT开发(五十五)———Qt Quick Controls的相关文章

QT开发(十五)——QT坐标系统

QT开发(十五)--QT坐标系统 一.QT坐标系简介 Qt中每一个窗口都有一个坐标系,默认窗口左上角为坐标原点,然后水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小.原点即为(0,0)点,以像素为单位增减. 二.坐标系变换 坐标系变换是利用变换矩阵来进行的, 通常利用QTransform类来设置变换矩阵.QPainter类提供了对坐标系的平移,缩放,旋转,扭曲等变换函数. void translate(const QPointF & offset) void transla

QT开发(五十)——QT串口编程基础

QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要参数如下: A.波特率:衡量通信速度的参数,表示每秒钟传送的bit的个数.例如9600波特表示每秒钟发送9600个bit. B.数据位:衡量通信中实际数据位的参数,当计算机发送一个信息包,实际包含的有效数据位个数. C.停止位:用于表示单个包的最后一位.典型的值为1和2位. D.奇偶校验位:串口通信

QT开发(十九)——QT内存泄漏问题

QT开发(十九)--QT内存泄漏问题 一.QT对象间的父子关系 QT最基础和核心的类是:QObject,QObject内部有一个list,会保存children,还有一个指针保存parent,当自己析构时,会自己从parent列表中删除并且析构所有的children. QT对象之间可以存在父子关系,每一个对象都可以保存它所有子对象的指针,每一个对象都有一个指向其父对象的指针. 当指定QT对象的父对象时,父对象会在子对象链表中加入该对象的指针,该对象会保存指向其父对象的指针. 当QT对象被销毁时,

QT开发(十二)——QT事件处理机制

QT开发(十二)--QT事件处理机制 一.QT事件简介 QT程序是事件驱动的, 程序的每个动作都是由内部某个事件所触发.QT事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. 常见的QT事件类型如下: 键盘事件: 按键按下和松开 鼠标事件: 鼠标移动,鼠标按键的按下和松开 拖放事件: 用鼠标进行拖放 滚轮事件: 鼠标滚轮滚动 绘屏事件: 重绘屏幕的某些部分 定时事件: 定时器到时 焦点事件: 键盘焦点移动 进入和离开事件: 鼠标移入widget之内,或是移出 移动事件: widget的

从零开始学ios开发(十五):Navigation Controllers and Table Views(中)

这篇内容我们继续上一篇的例子接着做下去,为其再添加3个table view的例子,有了之前的基础,学习下面的例子会变得很简单,很多东西都是举一反三,稍稍有些不同的内容,好了,闲话少说,开始这次的学习. 如果没有上一篇的代码,可以从这里下载Nav_1 1)第三个subtableview:Controls on Table Rows这个例子,我们将为每个table view的每一行添加一个按钮,这个按钮将放在accessory icon的位置(之前我们使用过accessoryType,其实这也是一个

QT开发(十六)——QT绘图实例-钟表

QT开发(十六)--QT绘图实例-钟表 一.钟表实现原理 钟表的实现需要设置定时器,定时器每隔一秒发送timeout()信号到QWidget::update()槽函数,update()槽函数将会重绘一次窗口,重写重绘事件函数paintEvent(QPaintEvent *event),根据获取的当前系统时间的时钟.分钟.秒钟重绘钟表的时针.分针.秒针. QTimer *timer = new QTimer(this); timer->start(1000);//一秒钟 connect(timer

嵌入式Linux裸机开发(十五)——LCD

嵌入式Linux裸机开发(十五)--LCD 一.LCD简介 LCD(Liquid Crystal Display)是液晶显示器简称.LCD的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的. 1.LCD类型 按照背光源的不同,LCD可以分为CCFL和LED两种. A.CCFL 指用CCFL(冷阴极荧光灯管)作为背光光源的液晶显示器(L

QT开发(十四)——QT绘图系统

QT开发(十四)--QT绘图系统 一.QT绘图原理 Qt4中的2D绘图系统称为Arthur绘图系统,可以使用相同的API在屏幕上和绘图设备上进行绘制,主要基于QPainter.QPainterDevice和 QPainterEngine.QPainter执行绘图操作,QPainterDevice提供绘图设备,是一个二维空间的抽象,QPainterEngine提供一些接口.QPainter用来执行具体的绘图相关操作,如画点,画线,填充,变换,alpha通道等.QPaintDevice类是能够进行绘

S3C2416裸机开发系列十五_GCC下uCOS的移植(1)

S3C2416裸机开发系列十五 GCC下uCOS的移植(1) 象棋小子    1048272975 操作系统是用来管理系统硬件.软件及数据资源,控制程序运行,并为其它应用软件提供支持的一种系统软件.根据不同的种类,又可分为实时操作系统.桌面操作系统.服务器操作系统等.对于一些小型的应用,对系统实时性要求高,硬件资源有限等的情况下,应尽量避免使用复杂庞大的操作系统(如Linux),使用小型的实时操作系统(如uCOS)更能满足应用的需求.笔者此处就uCOS-II的移植作一个简单的介绍. 1. 代码准