信号与槽连接
方式一:使用connect函数
static QMetaObject::Connection connect(
const QObject *sender,
const QMetaMethod &signal,
const QObject *receiver,
const QMetaMethod &method,
Qt::ConnectionType type = Qt::AutoConnection);
disconnect参数与上述一致,是断开连接。
方式二:直接定义声明槽函数
如:" on_pushButton_clicked() " ,pushButton 代表的是对象名,clicked 是对应的信号
pushButton要设置对应的ObjectName属性。
新建信号及使用
新建信号和槽函数
signals:
void changeTitleSingal(const QString& text);
private:
void changeTitle(const QString& text);
绑定信号与槽
connect(this,&Widget::changeTitleSingal,this,&Widget::changeTitle);
信号使用
emit changeTitleSingal();
控件
QWidget常见API
enabled有效
isEnabled()
获取到控件的可用状态
setEnabled(bool)
设置控件是否可使用. true表示可用, false表示禁用.
geometry位置尺寸
geometry()
获取到控件的位置和尺寸. 返回结果是一个const QRect&, 包含了x, y, width, height. 其中 x, y 是左上角的坐标.
setGeometry(QRect)
setGeometry(int x, int y, int width, int height)
设置控件的位置和尺寸. 可以直接设置一个QRect, 也可以分四个属性单独设置.
单独设置x,y会同时改变width和height,若要整体移动,使用最后一个全参函数。
move位置
void move(int x, int y);
void move(const QPoint &);
设置x,y坐标。
frameGeometry窗口位置尺寸
geomery()
获取的是当前widget所处的框架。
frameGeometry()
获取的是当前widget和windows窗口一体所处的框架。
在构造函数中获取时,由于还未生成windows窗口,所以构造函数内获取是一致的。
windowTitle窗口标题
windowTitle()
获取到控件的窗口标题.
setWindowTitle(const QString& title)
设置控件的窗口标题.
windowIcon窗口图标
windowIcon()
获取到控件的窗口图标. 返回QIcon对象.
setWindowIcon(const QIcon& icon)
设置控件的窗口图标.
Qt使用qrc机制解决图标问题(Quick Reference Card快速参考卡)
在构建程序的过程中, Qt会把资源文件的二进制数据转成cpp代码, 编译到exe 中. 从而使依赖的资源变得 "路径无关".
图标参考阿里巴巴矢量图标库:https://www.iconfont.cn/
一、新建qrc文件
二、加载图片
添加的文件必须是在qrc文件的同级目录, 或者同级目录的子目录中,路径不能包含中文。
三、编写代码
QIcon icon(":/nvshen.png");
this->setWindowIcon(icon);
• : 作为开头, 表示从 qrc 中读取资源.
• / 是上面配置的前缀
• nvshen.png 是资源的名称
windowOpacity窗口不透明度
windowOpacity()
获取到控件的不透明数值. 返回 float, 取值为 0.0 -> 1.0 其中 0.0 表示全透明, 1.0 表示完全不透明.
setWindowOpacity(float n)
设置控件的不透明数值.
cursor光标
cursor()
获取到当前 widget 的 cursor 属性, 返回 QCursor 对象.
当鼠标悬停在该 widget 上时, 就会显示出对应的形状.
setCursor(const QCursor& cursor)
设置该 widget 光标的形状. 仅在鼠标停留在该 widget 上时生效.
QGuiApplication::setOverrideCursor(const QCursor& cursor)
设置全局光标的形状. 对整个程序中的所有 widget 都会生效. 覆盖上面的setCursor设置的内容.
代码示例:
// 创建一个位图对象, 加载自定义光标图片
QPixmap pixmap(":/huaji.png");
// 缩放图片为 64 * 64 的尺寸.这里需要重新接收一下,scaled并不会改变pixmap内部属性。
pixmap = pixmap.scaled(64, 64);
// 创建 QCursor 对象, 并指定 "热点" 为 (2, 2) 坐标位置. "热点" 就是鼠标点击时生效的位置.
this->setCursor(QCursor(pixmap, 2, 2));
font字体
font()
获取当前 widget 的字体信息. 返回 QFont 对象.
setFont(const QFont& font)
设置当前 widget 的字体信息.
QFont属性 family 字体家族. 比如 "楷体", "宋体", "微软雅黑" 等 pointSize 字体大小 weight 字体粗细. 以数值方式表示粗细程度取值范围为 [0, 99], 数值越大越粗 bold 是否加粗. 设置为true, 相当于weight为75. 设置为false相当于weight为50 italic 是否倾斜 underline 是否带有下划线 strikeOut 是否带有删除线
toolTip提示说明
toolTip()
获取提示
setToolTip(const QString&)
设置 toolTip. 鼠标标悬停在该widget上时会有提示说明.
setToolTipDuring(int msec)
设置toolTip提示的时间.单位ms.时间到后toolTip自动消失.
focusPolicy焦点
focusPolicy()
获取该 widget 的 focusPolicy, 返回 Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy policy)
设置 widget 的 focusPolicy.
Qt::FocusPolicy 是⼀个枚举类型. 取值如下
• Qt::NoFocus:控件不会接收键盘焦点
• Qt::TabFocus:控件可以通过Tab键接收焦点
• Qt::ClickFocus:控件在鼠标点击时接收焦点
• Qt::StrongFocus:控件可以通过Tab键和鼠标点击接收焦点 (默认值)
• Qt::WheelFocus: 类似于 Qt::StrongFocus , 同时控件也通过鼠标滚轮获取到焦点 (新增的选项, 一般很少使用).
styleSheet层叠样式表
CSS中可以设置的样式属性非常多. 基于这些属性 Qt 只能支持其中一部分, 称为QSS(Qt Style Sheet) ,另外, Qt Designer 只能对样式的基本格式进行校验, 不能检测出哪些样式不被 Qt支持. 比如 text-align: center 这样的文本居中操作, 就无法支持。
setStyleSheet(const QString& styleSheet)
设置样式表,此处的语法格式同 CSS, 使用键值对的方式设置样式. 其中键和值之间使用 : 分割. 键值对之间使用 ; 分割.
例如:ui->pushButton_light->setStyleSheet("background-color: #000000; border:1px solid #FFFFFF");
使用在线调色板或者画图板或者微信截图, 都可以看到数字对应的颜色
计算机中使用 "像素" 表示屏幕上的一个基本单位(也就是⼀个发亮的光点).
每个光点都使用三个字节表示颜色, 分别是 R (red), G (green), B (blue) 一个字节表示 (取值范围是 0-255, 或者 0x00-0xFF).
混合三种不同颜色的数值比例, 就能搭配出千千万万的颜色出来.
• rgb(255, 0, 0) 或者 #FF0000 或者 #F00 表示纯红色.
• rgb(0, 255, 0) 或者 #00FF00 或者 #0F0 表示纯绿色.
• rgb(0, 0, 255) 或者 #0000FF 或者 #00F 表示纯蓝色.
• rgb(255, 255, 255) 或者 #FFFFFF 或者 #FFF 表示纯白色.
• rgb(0, 0, 0) 或者 #000000 或者 #000 表示纯黑色.
QTimer定时器
QTimer 表示定时器. 通过 start 方法启动定时器之后, 就会每隔一定周期, 触发一次QTimer::timeout 信号.
使用connect 把 QTimer::timeout 信号和 Widget::updateTime 连接起来, 意味着每次触发 QTimer::timeout 都会执行 Widget::updateTime。
void start(int msec);
void start();
void stop();
计时器开始结束。
QShortcut快捷键
代码示例
QShortcut *shortcut = new QShortcut(this);
shortcut->setKey(QKeySequence("-"));
connect(shortcut,&QShortcut::activated,this,&Widget::subValue);
Button按钮
QPushButton普通按钮
text | 按钮中的文本 |
icon | 按钮中的图标 |
iconSize | 按钮中图标的尺寸 |
shortCut | 按钮对应的快捷键,快捷键默认支持重复触发QKeySequence 的构造函数参数, 可以直接使用 "ctrl+c" 这样的按键名字符串表示, 也可以使用预定义好的常量 (形如 Qt::CTRL + Qt::Key_C ) 表示 |
autoRepeat | 按钮是否会重复触发. 当鼠标左键按住不放时, 如果设为 true, 则会持续产生鼠标点击事件; 如果设为 false, 则必须释放鼠标, 再次按下鼠标时才能产生点击事件(相当于游戏手柄上的 "连发" 效果) |
autoRepeatDelay | 重复触发的延时时间. 按住按钮多久之后, 开始重复触发 |
autoRepeatInterval | 重复触发的周期 |
setSizePolicy(QSizePolicy::Policy hor, QSizePolicy::Policy ver) | 设置按钮的尺寸策略 • QSizePolicy::Ignored : 忽略控件的尺寸,不对布局产生影响。 • QSizePolicy::Minimum : 控件的最小尺寸为固定值,布局时不会超过该值。 • QSizePolicy::Maximum : 控件的最大尺寸为固定值,布局时不会小于该值。 • QSizePolicy::Preferred : 控件的理想尺寸为固定值,布局时会尽量接近该值。 • QSizePolicy::Expanding : 控件的尺寸可以根据空间调整,尽可能占据更多空间。 • QSizePolicy::Shrinking : 控件的尺寸可以根据空间调整,尽可能缩小以适应间。 |
QRadioButton单选按钮
checkable | 是否能选中 |
checked | 是否已经被选中. checkable 是 checked 的前提条件 |
autoExclusive | 是否排他. 选中一个按钮之后是否会取消其他按钮的选中. 对于 QRadioButton 来说默认就是排他的 |
默认槽函数区别
• clicked 表示一次 "点击"
• pressed 表示鼠标 "按下"
• released 表示鼠标 "释放"
• toggled 表示按钮状态切换.
总的来说, toggled 是最适合 QRadioButton 的.
QButtonGroup进行分组
void addButton(QAbstractButton *);
void removeButton(QAbstractButton *);
增加删除按钮
代码示例
QButtonGroup *g1 = new QButtonGroup(this);
g1->addButton(ui->radioButton);
QCheckBox复选按钮
和 QCheckBox 最相关的属性也是 checkable 和 checked , 都是继承自QAbstractButton。
显示类控件
QLabel文本和图片
text | QLabel中的文本 |
textFormat | 文本的格式 • Qt::PlainText 纯文本 • Qt::RichText 富文本(支持 html 标签) • Qt::MarkdownText markdown 格式 • Qt::AutoText 根据文本内容自动决定文本格式. |
pixmap | QLabel 内部包含的图片 |
scaledContents | 设为 true 表示内容自动拉伸填充 QLabel 设为 false 则不会自动拉伸 |
frameShape | QFrame是QLabel的父类. 其中frameShape属性用来设置边框性质. • QFrame::Box :矩形边框 • QFrame::Panel :带有可点击区域的面板边框 • QFrame::WinPanel :Windows风格的边框 • QFrame::HLine :水平线边框 • QFrame::VLine :垂直线边框 • QFrame::StyledPanel:带有可点击区域的面板边框,但样式取决于窗口主题 |
alignment | 对齐方式. 可以设置水平和垂直方向如何对齐 代码示例: ui->label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); |
wordWrap | 设为 true 内部的文本会自动换行. 设为 false 则内部文本不会自动换行 |
indent | 设置文本缩进. 水平和垂直方向都生效 |
margin | 内部文本和边框之间的边距. 不同于 indent, 但是是上下左右四个方向都同时有效. 而indent 最多只是两个方向有效(具体哪两个方向有效取决于 alignment ) |
openExternalLinks | 是否允许打开一个外部的链接. (当 QLabel 文本内容包含 url 的时候涉及到) |
buddy | 给 QLabel 关联⼀个 "伙伴" , 这样点击 QLabel 时就能激活对应的伙伴. 例如伙伴如果是一个 QCheckBox, 那么该 QCheckBox 就会被选中. 把label中的文本设置为 "快捷键 &A" 这样的形式. 其中 & 后面跟着的字符, 就是快捷键. 可以通过 alt + A 的方式来触发该快捷键. 但是注意, 这里的快捷键和 QPushButton 的不同. 需要搭配 alt 和 单个字母的方式才能触发. |
QLCDNumber数字
intValue | QLCDNumber 显示的数字值(int) |
value | QLCDNumber 显示的数字值(double). 和 intValue 是联动的. 例如给 value 设为 1.5, intValue 的值就是 2. 另外, 设置 value 和 intValue 的方法名字为 display , 而不是 setValue 或者 setIntValue |
display | 设置 value 和 intValue |
digitCount | 显示几位数字 |
mode | 数字显⽰形式. 1. QLCDNumber::Dec :十进制模式,显示常规的十进制数字。 2. QLCDNumber::Hex :十六进制模式,以十六进制格式显示数字。 3. QLCDNumber::Bin :二进制模式,以二进制格式显示数字。 4. QLCDNumber::Oct :八进制模式,以八进制格式显示数字。 只有十进制的时候才能显示小数点后的内容 |
segmentStyle | 设置显示风格. 1. QLCDNumber::Flat :平面的显示风格,数字呈现在一个平坦的表⾯上。 2. QLCDNumber::Outline :轮廓显示风格,数字具有清晰的轮廓和阴影效果。 3. QLCDNumber::Filled :填充显示风格,数字被填充颜色并与背景区分开。 |
smallDecimalPoint | 设置比较小的小数点 |
QProgressBar进度条
minimum | 进度条最小值 |
maximum | 进度条最大值 |
value | 进度条当前值 |
alignment | 文本在进度条中的对齐方式. • Qt::AlignLeft : 左对齐 • Qt::AlignRight : 右对齐 • Qt::AlignCenter : 居中对齐 • Qt::AlignJustify : 两端对齐 |
textVisible | 进度条的数字是否可见 |
orientation | 进度条的方向是水平还是垂直 |
invertAppearance | 是否是朝反方向增长进度 |
textDirection | 文本的朝向 |
format | 展示的数字格式. • %p :表示进度的百分比(0-100) • %v :表示进度的数值(0-100) • %m :表示剩余时间(以毫秒为单位) • %t :表示总时间(以毫秒为单位) |
progressBar->setStyleSheet("QProgressBar::chunk {background-color: red}");
设置进度条颜色
使用QProgressBar::text 则可以选中文本
QCalendarWidget日历
selectDate | 当前选中的日期 |
minimumDate | 最小日期 |
maximumDate | 最大日期 |
firstDayOfWeek | 每周的第一天(也就是日历的第一列) 是周几. |
gridVisible | 是否显示表格的边框 |
selectionMode | 是否允许选择日期 |
navigationBarVisible | 日历上方标题是否显示 |
horizontalHeaderFormat | 日历上方标题显示的日期格式 |
verticalHeaderFormat | 日历第⼀列显示的内容格式 |
dateEditEnabled | 是否允许日期被编辑 |
重要信号
selectionChanged() | 当选中的日期发生改变时发出 |
activated(const QDate&) | 当双击⼀个有效的日期或者按下回车键时发出,形参是⼀个QDate类型,保存了选中的日期 |
currentPageChanged(int,int) | 当年份月份改变时发出,形参表示改变后的新年份和月份 |
槽函数代码示例:
void Widget::on_calendarWidget_selectionChanged()
{
QDate date = ui->calendarWidget->selectedDate();
ui->calendar->setText(date.toString());
}
QLineEdit单行输入框
text | 输入框中的文本 |
inputMask | 输入内容格式约束 inputMask 只能进行简单的输入格式校验. 实际开发中, 基于正则表达式的方式是更核心的方法 代码示例: ui->phone->setInputMask("000-0000-0000"); |
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 QString &text)) | 当QLineEdit中的文本改变时,发出此信号,text是新的文本。 代码对文本的修改不能触发这个信号. |
正则表达式
正则表达式在线工具: https://regextester.buyaocha.com/
验证器
QRegularExpressionValidator 在匹配性能上做出了一定优化. 但是从使用角度讲, 和QRegExpValidator 差别不大. 使用QRegExpValidator 即可。
设置验证器
void setValidator(const QValidator *)
创建验证器
QRegExpValidator(const QRegExp& rx, QObject *parent = nullptr)
QRegExp(const QString &pattern)
获取内置验证器
const QValidator * validator()
验证文本内容
QValidator::State validate(QString &, int &)
第一个参数填写的是要验证的字符串. 由于参数要求是 QString& 而不是 const QString& , 需要把这个变量复制⼀下.
第二个参数是⼀个 int&, 是输出型参数. 当验证的字符串不匹配时, 返回这个字符串的长度. (没有啥实质作用).
返回值是一个枚举. QValidator::Acceptable 表示验证通过, QValidator::Invalid 表示验证不通过。
使用验证器校验代码示例:
// 设置验证器
ui->phone->setValidator(new QRegExpValidator(QRegExp("^1\\d{10}$")));
// 获取验证器校验
void Widget::on_phone_textChanged(const QString &arg1)
{
const QValidator *validator = ui->phone->validator();
int ret = 0;
QString content = arg1;
QValidator::State state = validator->validate(content,ret);
if(state == QValidator::Acceptable)
// 通过
else if(state == QValidator::Invalid)
// 不通过
}
QTextEdit多行输入框
markdown | 输入框内持有的内容. 支持markdown格式. 能够自动的对markdown 文本进行渲染成html |
html | 输入框内持有的内容. 可以支持大部分html 标签. 包括img和table等. |
placeHolderText | 输入框为空时提示的内容 |
readOnly | 是否是只读的 |
undoRedoEnable | 是否开启 undo / redo 功能 按下 ctrl + z 触发 undo 按下 ctrl + y 触发 redo |
autoFormating | 开启自动格式化 |
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) | 文本被选中/取消选中时触发 |
获取文本
获取输入框文本
QString toPlainText()
QString toHtml()
QString toMarkdown()
获取光标位置和选中文本
QTextCursor textCursor()
使用QTextCursor对象获取选中文本
QString selectedText()
使用QTextCursor对象获取光标下标
int position()
QComboBox下拉框
currentText | 当前选中的文本 |
currentIndex | 当前选中的条目下标 从 0 开始计算. 如果当前没有条目被选中, 值为 -1 |
editable | 是否允许修改 设为 true 时, QComboBox 的行为就非常接近QLineEdit,也可以设置 validator |
iconSize | 下拉框图标 (小三角) 的大小 |
maxCount | 最多允许有多少个条目 |
addItem(const QString&) | 添加一个条目 |
currentIndex() | 获取当前条目的下标 从 0 开始计算. 如果当前没有条目被选中, 值为 -1 |
currentText() | 获取当前条目的文本内容 |
信号
void highlighted(int index) void textHighlighted(const QString &) | 当用户选择了⼀个选项时发出. 这个时候相当于用户点开下拉框, 并且鼠标划过某个选项. 此时还没有确认做出选择. |
void activated(int index) void textActivated(const QString &) | 当前选项改变时发出. 只要单击选择框即使所选内容选择前后没有变化也会触发此信号 |
currentIndexChanged(int) currentIndexChanged(const QString &text) | 当前选项改变时发出. 在单击选择框仅当所选内容前后有变化时才会出发此信号 |
editTextChanged(const QString &text) | 当编辑框中的文本改变时发出 (editable 为 true 时有效) |
QSpinBox / QDoubleSpinBox数值微调框
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,表示当前的数值. |
QDateEdit / QTimeEdit / QDateTimeEdit日期微调框
dateTime | 时间日期的值. 形如 2000/1/1 0:00:00 |
date | 单纯日期的值. 形如 2001/1/1 |
time | 单纯时间的值. 形如 0:00:00 |
displayFormat | 时间日期格式. 形如 yyyy/M/d H:mm • y 表示年份 • M 表示月份 • d 表示日期 • H 表示小时 • m 表示分钟 • s 表示秒 注意: 这里的格式化符号的含义, 不要记忆. 不同语言/库的设定规则是存在差异的. 一定是用的时候再去查 |
minimumDateTime | 最小时间日期 |
maximumDateTime | 最大时间日期 |
timeSpec | • Qt::LocalTime :显示本地时间。 • Qt::UTC :显示协调世界时(UTC)。 • Qt::OffsetFromUTC :显示相对于UTC的偏移量(时差). |
关于 本地时间(LocalTime) 和 协调世界时间(UTC)
UTC 时间是一个基于原子钟的标准时间. 不受地球的自转周期影响. 和格林威治时间 (GMT) 是非常接近的. 科学家会通过精密的设备来测量并维护.
咱们的计算机内部使用的时间就是基于 UTC 时间.本地时间则是基于不同的时区, 对 UTC 时间做出了一些调整. 比如咱们使用的北京时间, 位于"东八区", 就需要在 UTC 时间基础上 +8 个小时的时差.
信号
dateChanged(QDate) | 日期改变时触发 |
timeChanged(QTime) | 时间改变时触发 |
dateTimeChanged(QDateTime) | 时间日期任意一个改变时触发 |
QDateTime差值函数
qint64 daysTo(const QDateTime &)
qint64 secsTo(const QDateTime &)
qint64 msecsTo(const QDateTime &)
QDial旋钮
value | 持有的数值 |
minimum | 最小值 |
maximum | 最大值 |
singleStep | 按下方向键的时候改变的步长 |
pageStep | 按下 pageUp / pageDown 的时候改变的步长 |
sliderPosition | 界面上旋钮显示的初始位置 |
tracking | 外观是否会跟踪数值变化. 默认值为 true. 一般不需要修改 |
wrapping | 是否允许循环调整. 即数值如果超过最大值, 是否允许回到最⼩值. (调整过程能否 "套圈") |
notchesVisible | 是否显示刻度线 |
notchTarget | 刻度线之间的相对位置. 数字越大, 刻度线越稀疏. |
信号
valueChanged(int) | 数值改变时触发 |
rangeChanged(int, int) | 范围变化时触发 |
QSlider滑动条
QSlider 和 QDial 都是继承自 QAbstractSlider , 因此用法上基本相同。
value | 持有的数值 |
minimum | 最小值 |
maximum | 最大值 |
singleStep | 按下方向键的时候改变的步长 |
pageStep | 按下 pageUp / pageDown 的时候改变的步长 |
sliderPosition | 界面上旋钮显示的初始位置 |
tracking | 外观是否会跟踪数值变化. 默认值为 true. ⼀般不需要修改 |
orientation | 滑动条的方向是水平还是垂直 |
invertedAppearance | 是否要翻转滑动条的方向 |
tickPosition | 刻度的位置 |
tickInterval | 刻度的密集程度 |
多元素控件
QListWidget纵向列表
核心属性
currentRow | 当前被选中的是第几行 |
count | 一共有多少行 |
sortingEnabled | 是否允许排序 |
isWrapping | 是否允许换行 |
itemAlignment | 元素的对齐方式 |
selectRectVisible | 被选中的元素矩形是否可见 |
spacing | 元素之间的间隔 |
核心方法
addItem(const QString& label) addItem(QListWidgetItem *item) | 列表中添加元素. |
currentItem() | 返回 QListWidgetItem* 表示当前选中的元素 |
setCurrentItem(QListWidgetItem* item) | 设置选中哪个元素 |
setCurrentRow(int row) | 设置选中第几行的元素 |
insertItem(const QString& label, int row) insertItem(QListWidgetItem *item, int row) | 在指定的位置插入元素 |
item(int row) | 返回 QListWidgetItem* 表示第 row 行的元素 |
takeItem(int row) | 删除指定行的元素, 返回 QListWidgetItem* 表示是哪个元素被删除了 |
核心信号
currentItemChanged(QListWidgetItem* current, QListWidgetItem* old) | 选中不同元素时会触发. 参数是当前选中的元素和之前选中的元素. |
currentRowChanged(int) | 选中不同元素时会触发. 参数是当前选中元素的行数. |
itemClicked(QListWidgetItem* item) | 点击某个元素时触发 |
itemDoubleClicked(QListWidgetItem* item) | 双击某个元素时触发 |
itemEntered(QListWidgetItem* item) | 鼠标进入元素时触发 |
QListWidgetItem纵向列表项
setFont | 设置字体 |
setIcon | 设置图标 |
setHidden | 设置隐藏 |
setSizeHint | 设置尺寸 |
setSelected | 设置是否选中 |
setText | 设置文本 |
setTextAlignment | 设置文本对齐方式 |
QTableWidget表格控件
核心方法
item(int row, int column) | 根据行数列数获取指定的 QTableWidgetItem* |
setItem(int row, int column, QTableWidget*) | 根据行数列数设置表格中的元素 |
currentItem() | 返回被选中的元素 QTableWidgetItem* |
currentRow() | 返回被选中元素是第几行 |
currentColumn() | 返回被选中元素是第几列 |
row(QTableWidgetItem*) | 获取指定item是第几行 |
column(QTableWidgetItem* ) | 获取指定 item 是第几列 |
rowCount() | 获取行数 |
columnCount() | 获取列数 |
insertRow(int row) | 在第row行处插入新行 |
insertColumn(int column) | 在第column列插入新列 |
removeRow(int row) | 删除第row行 |
removeColumn(int column) | 删除第column列 |
setHorizontalHeaderItem(int column, QTableWidgetItem*) | 设置指定列的表头 |
setVerticalHeaderItem(int row, QTableWidgetItem*) | 设置指定行的表头 |
setEditTriggers(EditTriggers triggers) | 设置单元格禁止编辑 例:setEditTriggers(QAbstractItemView::NoEditTriggers); |
核心信号
cellClicked(int row, int column) | 点击单元格时触发 |
cellDoubleClicked(int row, int column) | 双击单元格时触发 |
cellEntered(int row, int column) | 鼠标进入单元格时触发 |
currentCellChanged(int row, int column, int previousRow, int previousColumn) | 选中不同单元格时触发 |
QTableWidgetItem表格项
row() | 获取当前是第几行 |
column() | 获取当前是第几列 |
setText(const QString&) | 设置文本 |
setTextAlignment(int) | 设置文本对齐 |
setIcon(const QIcon&) | 设置图标 |
setSelected(bool) | 设置被选中 |
setSizeHints(const QSize&) | 设置尺寸 |
setFont(const QFont&) | 设置字体 |
QTreeWidget树形控件
核心方法
clear | 清空所有子节点 |
addTopLevelItem(QTreeWidgetItem* item) | 新增顶层节点 |
topLevelItem(int index) | 获取指定下标的顶层节点. |
topLevelItemCount() | 获取顶层节点个数 |
indexOfTopLevelItem(QTreeWidgetItem* item) | 查询指定节点是顶层节点中的下标 |
takeTopLevelItem(int index) | 删除指定的顶层节点. 返回 QTreeWidgetItem* 表示被删除的元素 |
currentItem() | 获取到当前选中的节点, 返回 QTreeWidgetItem* |
setCurrentItem(QTreeWidgetItem* item) | 选中指定节点 |
setExpanded(bool) | 展开/关闭节点 |
setHeaderLabel(const QString& text) | 设置 TreeWidget 的 header 名称. |
核心信号
currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* old) | 切换选中元素时触发 |
itemClicked(QTreeWidgetItem* item, int col | 点击元素时触发 |
itemDoubleClicked(QTreeWidgetItem* item, int col) | 双击元素时触发 |
itemEntered(QTreeWidgetItem* item, int col) | 鼠标进入时触发 |
itemExpanded(QTreeWidgetItem* item) | 元素被展开时触发 |
itemCollapsend(QTreeWidgetItem* item) | 元素被折叠时触发 |
QTreeWidgetItem树形项
setText(int column, const QString &atext) | 设置文本 |
setTextAlignment(int column, int alignment) | 设置文本对齐 |
setIcon(int column, const QIcon &aicon) | 设置图标 |
setSelected(bool) | 设置被选中 |
setSizeHint(int column, const QSize &size) | 设置尺寸 |
setFont(int column, const QFont &afont) | 设置字体 |
setHidden(bool) | 是否隐藏 |
setExpand(bool) | 是否展开 |
setDisabled(bool) | 是否禁用 |
addChild(QTreeWidgetItem* child) | 新增子节点 |
childCount() | 子节点的个数 |
indexOfChild(QTreeWidgetItem *achild) | 获取子节点下标 |
child(int index) | 获取指定下标的子节点. 返回 QTreeWidgetItem* |
takeChild(int index) | 删除对应下标的子节点 |
removeChild(QTreeWidgetItem* child) | 删除对应的子节点 |
parent() | 获取该元素的父节点 |
容器类控件
QGroupBox分组框
title | 分组框的标题 |
alignment | 分组框内部内容的对齐方式 |
flat | 是否是 "扁平" 模式 |
checkable | 是否可选择. 设为 true, 则在 title 前方会多出一个可勾选的部分. |
checked | 描述分组框的选择状态 (前提是 checkable 为 true) |
QTabWidget标签页控件
核心属性
tabPosition | 标签页所在的位置. • North 上方 • South 下方 • West 左侧 • East 右侧 |
currentIndex | 当前选中了第几个标签页 (从 0 开始计算) |
currentTabText | 当前选中的标签页的文本 |
currentTabName | 当前选中的标签页的名字 |
currentTabIcon | 当前选中的标签页的图标 |
currentTabToolTip | 当前选中的标签页的提示信息 |
tabsCloseable | 标签页是否可以关闭 点击关闭只发送了tabCloseRequest信号,需要手动关联槽生效 |
movable | 标签页是否可以移动 |
核心方法
int addTab(QWidget *widget, const QString &); int addTab(QWidget *widget, const QIcon& icon, const QString &label); | 新增标签页 |
int insertTab(int index, QWidget *widget, const QString &); int insertTab(int index, QWidget *widget, const QIcon& icon, const QString &label); | 插入标签页 |
removeTab(int index) | 删除标签页 |
setTabText(int index, const QString &) | 设置标签页标题 |
setTabIcon(int index, const QIcon & icon) | 设置标签页图标 |
int currentIndex() QWidget *currentWidget() | 获取当前选中的标签页 |
QWidget *widget(int index) | 获取指定下标标签页 |
void setCurrentIndex(int index); void setCurrentWidget(QWidget *widget); | 切换选中标签页 |
clear() | 清空标签页 |
count() | 获取标签页个数 |
核心信号
currentChanged(int) | 在标签页发生切换时触发, 参数为被点击的选项卡编号. |
tabBarClicked(int) | 在点击选项卡的标签条的时候触发. 参数为被点击的选项卡编号. |
tabBarDoubleClicked(int) | 在双击选项卡的标签条的时候触发. 参数为被点击的选项卡编号. |
tabCloseRequest(int) | 在标签页关闭时触发. 参数为被关闭的选项卡编号. |
布局管理器
QVBoxLayout垂直 / QHBoxLayout水平布局
layoutLeftMargin | 左侧边距 |
layoutRightMargin | 右侧边距 |
layoutTopMargin | 上方边距 |
layoutBottomMargin | 下方边距 |
layoutSpacing | 相邻元素之间的间距 |
addWidget(QWidget *) | 添加控件 |
addLayout(QLayout *layout) | 添加布局管理器 |
addSpacerItem(QSpacerItem *spacerItem) | 添加空白 |
QGridLayout网格布局
layoutLeftMargin | 左侧边距 |
layoutRightMargin | 右侧边距 |
layoutTopMargin | 上方边距 |
layoutBottomMargin | 下方边距 |
layoutHorizontalSpacing | 相邻元素之间水平方向的间距 |
layoutVerticalSpacing | 相邻元素之间垂直方向的间距 |
layoutRowStretch | 行方向的拉伸系数 |
layoutColumnStretch | 列方向的拉伸系数 |
addWidget(QWidget *) addWidget(QWidget *, int row, int column) | 添加控件,不写坐标默认按行添加 |
addLayout(QLayout *layout) | 添加布局管理器 |
addSpacerItem(QSpacerItem *spacerItem) | 添加空白 |
QFormLayout表单布局
void addRow(QWidget *label, QWidget *field); void addRow(QWidget *label, QLayout *field); void addRow(const QString &labelText, QWidget *field); void addRow(const QString &labelText, QLayout *field); | 添加一行 每行包含两个控件. 第⼀个控件固定是 QLabel / 文本, 第二个控件则可以是任意控件 |
QSpacerItem空白
width | 宽度 |
height | 高度 |
hData | 水平方向的 sizePolicy • QSizePolicy::Ignored : 忽略控件的尺寸,不对布局产生影响。 • QSizePolicy::Minimum : 控件的最小尺寸为固定值,布局时不会超过该值。 • QSizePolicy::Maximum : 控件的最大尺寸为固定值,布局时不会小于该值。 • QSizePolicy::Preferred : 控件的理想尺寸为固定值,布局时会尽量接近该值。 • QSizePolicy::Expanding : 控件的尺寸可以根据空间调整,尽可能占据更多空 间。 • QSizePolicy::Shrinking : 控件的尺寸可以根据空间调整,尽可能缩小以适应空间。 |
vData | 垂直方向的 sizePolicy 选项同上. |