跳至主要內容

Qt

LincZero大约 3 分钟

Qt

目录

Qt Quick Controls 1 开发

吐槽:用书太旧了,看得糊涂

Qt Quick Control 简概

简概

  • Qt 5.1开始引用的QML模块,提供了大量类似 Qt Widgets 那样的可重用的UI组件,如按钮、菜单、对话框和视图等
  • 这些组件能在不同的平台上模仿相应的本地行为
  • 对比普通QML程序
    • 需要导入Qt Quick Controls库
    • 定义了一个标准的桌面应用程序窗口,由主应用窗口及附属组件类属性、主窗体和其他类型组件构成。用到的组件库都要import

项目创建

  • 旧版本:文件 > 新建文件或项目 > 新建项目 > Application > Qt Quick Controls Application模板
  • 现版本:没有了Qt Quick Controls项目模板的选项

项目结构(书本版本)

两个文件

main.qml

/* import部分 */
import QtQuick 2.7
import QtQuick.Controls						// 版本1.5用不了,可以用2.12
import QtQuick.Dialogs 1.2  				// 新版本会报错:QML module not found

/* 对象声明 */
ApplicationWindow{							// 【主应用窗口】
    visible:true
    width:640
    height:480
    title:qsTr("Hello World")
    menuBar:MenuBar{                    	// 组件类属性:菜单栏
        Menu{                           	// 菜单
            title:qsTr("File")
            MenuItem{                   	// 菜单项
                text:qsTr("File")
                onTriggered:console.log("Open action triggered");
            }
            MenuItem{
                text:qsTr("Exit")
                onTriggered:Qt.quit();
            }
        }
    }
    MainForm{                           	// 主窗体
        anchors.fill:parent
        button1.onClicked:messageDialog.show(qsTr("Button 1 pressed"))
        button2.onClicked:messageDialog.show(qsTr("Button 2 pressed"))
    }
    MessageDialog{                      	// 其他组件:对话框
        id:messageDialog
        title:qsTr("May I have your attention, please?")
        function show(caption){
            messageDialog.text = caption;
            messageDialog.open();
        }
    }
}

其中import版本详见官网

QtQtQuickopen in new windowQtQuick.Controlsopen in new window, QtQuick.Controls.Materialopen in new window,
QtQuick.Controls.Universalopen in new window, QtQuick.Templatesopen in new window
Qt.labs.calendaropen in new window, Qt.labs.platformopen in new window
5.72.72.01.0
5.82.82.11.0
5.92.92.21.0
5.102.102.31.0
5.112.112.41.0
5.122.122.121.0
............

MainForm.ui.qml

import QtQuick 2.7
import QtQuick.Controls 1.5
import QtQuick.Layouts 1.3

Item{
    width:640
    height:480
    /* 定义属性别名,在main.qml中引用这两个按钮控件 */
    property alias button1: button1
    property alias button2: button2
    RowLayout{
    	anchors.centerIn:parent
		Button{
    		id:button1
    		text:qsTr("Press Me 1")
		}
		Button{
            id:button2
            text:qsTr("Press Me 2")
        }
	}
}

项目结构(无错版本)

需要多import挺多的库,不知道什么库就F1一下,也不算太麻烦

Qt Quick 窗体应用程序结构

  • ApplicationWinodws,主应用窗口
  • 组件类属性,由ApplicationWinodws自带
    • menuBar,菜单栏
      • Menu,菜单
        • MenuItem,菜单项
    • toolBar,工具栏
    • statusBar,状态栏
    • style,样式组件
  • MainForm,主窗体
  • 其他类型组件
    • MessageDialog,消息对话框
  • 完整界面的代码框架

Qt Quick 控件

简概

Qt Quick 控件

控件名称对应样式表功能描述
Button命令按钮ButtonStyle单击执行操作
CheckBox复选框CheckBoxStyle可同时选中多个选项
ComboBox组合框ComboBoxStyle提供下拉列表选项
ExclusiveGroup互斥选项框——仅能选择一个控件
GroupBox组框——用于定义空间组的容器
Label标签——界面文字提示
RadioButton单选按钮RadioButtonStyle单击选中,通常分组使用,只能选其中一个选项
TextArea文本区TextAreaStyle用于显示多行可编辑的格式化文本
TextField文本框TextFieldStyle可供输入(显示)一行纯文本
BusyIndicator忙指示器BusyIndicatorStyle用以表示程序正在执行某项操作(如载入图片),请用于耐心等待
Calendar日历CalendarStyle提供日历功能供用户选择设定日期
ProgressBar进度条ProgressBarStyle动态显式程序执行进度
Slider滑动条SliderStyle提供水平或垂直方向的滑块,鼠标拖动可设置参数
SpinBox数值旋转框SpinBoxStyle单击上下箭头可设置数值参数
Switch开关SwitchStyle控制某项功能的开启/关闭,常用于移动智能手机的应用界面

基本控件

高级控件

样式定制

Qt Quick 对话框

Qt Quick 导航视图

Qt 5.5(Qt Quick Controls 1.4)新增组件