QWidget常见控件的API与信号

信号与槽连接

方式一:使用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");

使用在线调色板或者画图板或者微信截图, 都可以看到数字对应的颜色

https://www.sojson.com/web/online.html

计算机中使用 "像素" 表示屏幕上的一个基本单位(也就是⼀个发亮的光点).

每个光点都使用三个字节表示颜色, 分别是 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://learn.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2008/ae5bf541(v=vs.90)?redirectedfrom=MSDN

正则表达式在线工具: 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

选项同上.

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,QWidget是一个基本的用户界面类,用于创建各种窗口部件。要添加控件,首先需要创建QWidget对象。然后,可以使用各种控件类,例如QPushButton、QLabel或QLineEdit来创建具体的控件。 添加控件的主要步骤如下: 1. 创建QWidget对象,可以通过继承QWidget类来创建自定义窗口。 2. 使用相应的控件类创建控件对象,例如QPushButton、QLabel等。控件对象的父级设置为QWidget对象。 3. 设置控件对象的属性,例如大小、位置、文本内容等。 4. 将控件对象添加到QWidget对象中,可以使用布局管理器来方便地管理控件的位置和大小。 5. 最后,显示QWidget对象,即调用显示函数如show()或exec()。 下面是一个简单的示例代码,演示如何在QWidget中添加QPushButton: #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.setWindowTitle("添加控件示例"); QPushButton button("点击我", &window); button.setGeometry(100, 50, 100, 30); window.show(); return app.exec(); } 在这个示例中,首先创建了一个QApplication对象app。然后创建了一个QWidget对象window,设置了窗口标题为"添加控件示例"。然后创建了一个QPushButton对象button,并将其父级设置为window对象。接着通过setGeometry函数设置了button的位置和大小。最后,调用window对象的show函数显示窗口,并通过app对象的exec函数进入主事件循环。 通过以上步骤,我们可以在QWidget中添加各种控件,并实现丰富的用户界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值