目录1. Line Edit2. Text Edit3. Combo Box4. Spin Box5. Date Edit Time Edit6. Dial7. Slider1. Line EditQLineEdit ⽤来表示单行输入框. 可以输⼊⼀段⽂本, 但是不能换⾏.核心属性属性说明text输⼊框中的⽂本inputMask输⼊内容格式约束maxLength最⼤⻓度frame是否添加边框echoMode显示方式QLineEdit::Normal 这是默认值⽂本框会显⽰输⼊的⽂本。QLineEdit::Password 在这种模式下输⼊的字符会被隐藏通常⽤星号*或等号代替。QLineEdit::NoEcho 在这种模式下⽂本框不会显⽰任何输⼊的字符。cursorPosition光标所在位置alignment⽂字对齐方式, 设置水平和垂直方向的对齐dragEnabled是否允许拖拽readOnly是否是只读的(不允许修改)placeHolderText当输⼊框内容为空的时候, 显示什么样的提示信息clearButtonEnabled是否会⾃动显示出 清除按钮核心信号属性说明void cursorPositionChanged(int old, int new)当⿏标移动时发出此信号old为先前的位置new为新位置void editingFinished()当按返回或者回⻋键时或者行编辑失去焦点时发出此信号。void returnPressed()当返回或回⻋键按下时发出此信号.如果设置了验证器, 必须要验证通过, 才能触发.void selectionChanged()当选中的⽂本改变时发出此信号。void textChanged(const QString text)当QLineEdit中的⽂本改变时发出此信号text是新的⽂本。代码对⽂本的修改能够触发这个信号void textEdited(const QStringtext))当QLineEdit中的⽂本改变时发出此信号text是新的⽂本。代码对⽂本的修改不能触发这个信号.eg让用户输入个人信息姓名、密码、性别、电话通过提交按钮把上述内容统一获取到姓名没有进行输入时便有提示一输入提示便消失此时后面还有清除的按钮密码同样的有提示输入的密码以原点的形式来显示同时也有清除的按钮电话电话的文本框中有一定的格式必须是3-4-4的格式进行输入inputMask 可以针对输入框中的内容进行简单的校验对提交按钮进行设置当一点提交按钮的时候可以将上面的内容简单的显示出来实际开发中可以通过网络把数据发给服务器inputMask 功能比较优先只能进行简单的验证要需要比较复杂的功能就需要使用 “正则表达式”正则表达式本质上就是一个带有特殊字符的字符串特殊字符用来表示另一个字符串的特征。此时就可以借助正则表达式来描述出一些具有一定特点的字符串。基于这些特点就可以完成字符串的匹配。正则表达式在用到的时候又去查。按钮在开始的时候是禁用的状态当用户在输入框中输入的内容是否为合法的手机号码如果是就显示为可以提交的状态如果不是按钮是禁用的状态。上述代码只是注册一个验证器具体验证器怎么使用还需要写其它代码来完成。验证输入框的内容是否合法。只要输入框中的内容发生改变了验证操作就应该被执行。第一个参数是要验证的字符串参数类型是QString不是 const所以text 不能直接使用第二个参数如果你的字符串不符合规则是从哪个位置开始不符合的但是实际上这个参数没有太大的用处virtual QValidator::State validate(QString input, int pos) const override返回类型是枚举类型输入数字为10位的时候仍然是不可用的但是当我们在输入一位的时候此时按钮就变为可用的状态eg验证两次密码的一致性使用 testEdited 信号来触发对于两个输入框内容的判定修改代码但是这里显示的有警告解决方法类型转换这个写法对于代码的实际墨迹是没有任何影响的同时可以“骗过”编译器警告就没有了。eg针对密码可以切换 “显示密码” 的状态运行2. Text EditQPlainTextEdit也是表示多行输入框但是只能表示纯文本Plain TextQTextEdit 表示多行输⼊框. 也是⼀个富⽂本 markdown 编辑器.并且能在内容超出编辑框范围时⾃动提供滚动条核心属性属性说明markdown输⼊框内持有的内容. ⽀持 markdown 格式. 能够⾃动的对markdown ⽂本进⾏渲染成 htmlhtml输⼊框内持有的内容. 可以⽀持⼤部分 html 标签. 包括 img 和 table 等.placeHolderText输⼊框为空时提示的内容readOnly是否是只读的undoRedoEnable是否开启 undo / redo 功能.按下 ctrl z 触发 undo按下 ctrl y 触发 redoautoFormating开启⾃动格式化.tabstopWidth按下缩进占多少空间overwriteMode是否开启覆盖写模式acceptRichText是否接收富⽂本内容verticalScrollBarPolicy垂直⽅向滚动条的出现策略Qt::ScrollBarAsNeeded : 根据内容⾃动决定是否需要滚动条。这是默认值。Qt::ScrollBarAlwaysOff : 总是关闭滚动条。Qt::ScrollBarAlwaysOn : 总是显示滚动条。horizontalScrollBarPolicy⽔平⽅向滚动条的出现策略Qt::ScrollBarAsNeeded : 根据内容⾃动决定是否需要滚动条。这是默认值。Qt::ScrollBarAlwaysOff : 总是关闭滚动条。Qt::ScrollBarAlwaysOn : 总是显⽰滚动条。核心信号信号说明textChanged()⽂本内容改变时触发selectionChanged()选中范围改变时触发cursorPositionChanged()光标移动时触发undoAvailable(bool)可以进⾏ undo 操作时触发redoAvailable(bool)可以进⾏ redo 操作时触发copyAvaiable(bool)⽂本被选中/取消选中时触发eg获取多行输入框的内容此时的 kkkk 不是敲在了 输入框里面而是输入到了 “输入法给你提供的窗口中”当你按下空格键或者是回车键的时候输入法的内容才会进入输入框中所谓的输入法其实是单独的一个窗口。所以不会显示到上面的 label 中。eg演示 QTextEdit 的信号textChanged()内容改变触发该信号selectionChanged选中内容改变触发该信号运行cursorPositionChanged光标位置改变触发该信号undoAvailable (bool)、redoAvailable (bool)、copyAvailable(bool b)输入一个字符之后便可进行undoAvailable 操作ctrl z 之后undoAvailable falseredoAvailable: truectrl y 之后undoAvailable trueredoAvailable: false选中内容之后copyAvailable: true取消选中之后copyAvailable: false3. Combo BoxQComboBox 表示下拉框核心属性属性说明currentText当前选中的⽂本currentIndex当前选中的条⽬下标从 0 开始计算. 如果当前没有条⽬被选中, 值为 -1editable是否允许修改设为 true 时, QComboBox 的⾏为就⾮常接近 QLineEdit , 也可以设置 validatoriconSize下拉框图标 小三角的大小maxCount最多允许有多少个条⽬核心方法⽅法说明addItem(const QString)添加⼀个条⽬currentIndex()获取当前条⽬的下标从 0 开始计算. 如果当前没有条⽬被选中, 值为 -1currentText()获取当前条⽬的⽂本内容.核心信号方法说明activated(int)activated(const QString text)当用户选择了⼀个选项时发出.这个时候相当于⽤⼾点开下拉框, 并且⿏标划过某个选项.此时还没有确认做出选择currentIndexChanged(int)currentIndexChanged(const QString text)当前选项改变时发出.此时用户已经明确的选择了⼀个选项.用户操作或者通过程序操作都会触发这个信号editTextChanged(const QString text)当编辑框中的⽂本改变时发出(editable 为 true 时有效)eg模拟一下塔斯汀点餐运行也可通过图形化的界面完成上面的操作右键选择编辑项目也是可以完成项目的添加后面的小食和饮料的操作也是如此下拉框中内容不是写死的而是通过文件/网络加载数据得到的选课操作以文件加载为例修改文件内容后需要重启程序才能更新内容。4. Spin Box使⽤ QSpinBox 或者 QDoubleSpinBox 表示微调框, 它是带有按钮的输⼊框. 可以⽤来输⼊整数/浮点数. 通过点击按钮来修改数值大小.由于 SpinBox 和 QDoubleSpinBox 用法基本相同, 就只介绍 SpinBox 的使⽤了QSpinBox 关键属性属性说明value存储的数值.singleStep每次调整的 步⻓. 按下⼀次按钮数据变化多少.displayInteger数字的进制. 例如 displayInteger 设为 10, 则是按照 10 进制表示意. 设为 2 则为 2进制表示.minimum最小值maximum最大值suffix后缀prefix前缀wrapping是否允许换行frame是否带边框alignment⽂字对齐方式.readOnly是否允许修改buttonSymbol按钮上的图标.UpDownArrows 上下箭头形式PlusMinus 加减号形式NoButtons 没有按钮accelerated (加速的)按下按钮时是否为快速调整模式correctionMode输⼊有误时如何修正.QAbstractSpinBox::CorrectToPreviousValue : 如果⽤⼾输⼊了⼀个⽆效的值例如在只能显⽰正整数的SpinBox中输⼊了负数那么SpinBox会恢复为上⼀个有效值。例如如果SpinBox的初始值是1用户输⼊了-1⽆效然后SpinBox会恢复为1。QAbstractSpinBox::CorrectToNearestValue : 如果⽤⼾输⼊了⼀个⽆效的值SpinBox会恢复为最接近的有效值。例如如果SpinBox的初始值是1⽤⼾输⼊了-1⽆效那么SpinBox会恢复为0。keyboardTrack是否开启键盘跟踪.设为 true, 每次在输⼊框输⼊⼀个数字, 都会触发⼀次 valueChanged() 和textChanged() 信号.设为 false, 只有在最终按下 enter 或者输⼊框失去焦点, 才会触发valueChanged() 和 textChanged() 信号.核心信号信号说明textChanged(QString)微调框的⽂本发⽣改变时会触发.参数 QString 带有 前缀 和 后缀valueChanged(int)微调框的⽂本发⽣改变时会触发.参数 int, 表⽰当前的数值.通过 下拉框 选择每个食物 的种类再通过 微调框 来选择数量规定下单数应该最少是1才行每种吃的最大的单数不超过20。5. Date Edit Time Edit使⽤ QDateEdit 作为⽇期的微调框.使⽤ QTimeEdit 作为时间的微调框.使⽤ QDateTimeEdit 作为时间⽇期的微调框.这⼏个控件⽤法⾮常相似, 我们以 QDateTimeEdit 为例进⾏介绍.QDateTimeEdit 核心属性属性说明dateTime时间⽇期的值. 形如 2000/1/1 0:00:00date单纯⽇期的值. 形如 2001/1/1time单纯时间的值. 形如 0:00:00displayFormat时间⽇期格式. 形如 yyyy/M/d H:mmy 表示年份M 表示⽉份d 表示⽇期H 表示⼩时m 表示分钟s 表示秒注意: 这⾥的格式化符号的含义, 不要记忆. 不同语⾔/库的设定规则是存在差异的. ⼀定是⽤的时候再去查.minimumDateTime最小时间⽇期maximumDateTime最大时间⽇期timeSpecQt::LocalTime 显⽰本地时间。Qt::UTC 显⽰协调世界时UTC。Qt::OffsetFromUTC 显⽰相对于UTC的偏移量(时差)核心信号信号说明dateChanged(QDate)⽇期改变时触发.timeChanged(QTime)时间改变时触发.dateTimeChanged(QDateTime)时间⽇期任意⼀个改变时触发.eg时间计算器计算两个时间之间的是相隔多少天或者是多少小时的QDateTime 提供了两个函数daysTo计算两个时间之间的天数的差值但是官方文档中写着不满24小时也会算作一天secsTo计算两个时间之间的秒数的差值所以用secsTo来演示运行6. Dial使⽤ QDial 表示⼀个 旋钮有些程序, 通过⿏标拖动旋钮旋转, 即可完成⼀些相关的设置核心属性属性说明value持有的数值.minimum最⼩值maximum最⼤值singleStep按下⽅向键的时候改变的步⻓pageStep按下 pageUp / pageDown 的时候改变的步⻓.sliderPosition界⾯上旋钮显示的 初始位置tracking外观是否会跟踪数值变化.默认值为 true. ⼀般不需要修改.wrapping是否允许循环调整.即数值如果超过最⼤值, 是否允许回到最⼩值.(调整过程能否 套圈)notchesVisible是否显⽰ 刻度线notchTarget刻度线之间的相对位置.数字越⼤, 刻度线越稀疏.核心信号属性说明valueChanged(int)数值改变时触发rangeChanged(int, int)范围变化时触发初始化的状态在向右滑动的话就会出现卡顿的现象勾选warpping选项再次运行就不会出现卡顿的现象了显示刻度线eg通过旋钮控制窗口的不透明度初始值的设置让它在最开始就是100完全不透明度先看看值的变化通过数值去设置不透明度注意不透明之间的范围是0-11是完全不透明0是完全透明所以我们得处理一下(double)value / 100加一个显示内容的label7. Slider使⽤ QSlider 表示⼀个滑动条.QSlider 和 QDial 都是继承⾃ QAbstractSlider , 因此⽤法上基本相同核心属性属性说明value持有的数值.minimum最⼩值maximum最⼤值singleStep按下⽅向键的时候改变的步⻓pageStep按下 pageUp / pageDown 的时候改变的步⻓.sliderPosition滑动条显⽰的 初始位置tracking外观是否会跟踪数值变化.默认值为 true. ⼀般不需要修改.orientation滑动条的⽅向是⽔平还是垂直invertedAppearance是否要翻转滑动条的方向tickPosition刻度的位置tickInterval刻度的密集程度.核心信号属性说明valueChanged(int)数值改变时触发rangeChanged(int, int)范围变化时触发eg在窗口上有两个滑动条一个水平一个垂直能够调整窗口的宽度和高度勾选运行自定义快捷键滑动条本身就可以通过方向键和 pageUp pageBown操作但是我们也是可以通过自定义