Group Box
使⽤ QGroupBox 实现⼀个带有标题的分组框.可以把其他的控件放到⾥⾯作为⼀组.这样看起来能更好看⼀点.
注意,不要把 QGroupBox 和 QButtonGroup 混淆.(之前在介绍 QRadionButton的时候提到了 QButtonGroup ).
![![[Pasted image 20250422092535.png]]](https://i-blog.csdnimg.cn/direct/6797e59f39a14404b84b7838ca81f815.png)
核⼼属性
| 属性 | 说明 |
|---|---|
| title | 分组框的标题 |
| alignment | 分组框内部内容的对⻬⽅式 |
| flat | 是否是"扁平"模式 |
| checkable | 是否可选择. 设为true,则在title前⽅会多出⼀个可勾选的部分. |
| checked | 描述分组框的选择状态(前提是checkable为true) |
分组框只是⼀个⽤来"美化界⾯"这样的组件,并不涉及到⽤⼾交互和业务逻辑.属于"锦上添花"
代码⽰例:给⻨当劳案例加上分组框
1)在界⾯上创建三个分组框,并且在分组框内部创建下拉框和微调框.
![![[Pasted image 20250422093400.png]]](https://i-blog.csdnimg.cn/direct/c8247cf80bcd4f8e943a82ed6d5b0e10.png)
在复制粘贴控件的时候,⼀定要先选中对应的⽗控件,再粘贴.
2)编写widget.cpp,添加初始化下拉框的代码
Tab Widget
使⽤ QTabWidget 实现⼀个带有标签⻚的控件,可以往⾥⾯添加⼀些widget.进⼀步的就可以通过标签⻚来切换
核⼼属性
| 属性 | 说明 |
|---|---|
| tabPosition | 标签⻚所在的位置. • North 上⽅ • South 下⽅ • West 左侧 • East 右侧 |
| currentIndex | 当前选中了第⼏个标签⻚(从0开始计算) |
| currentTabText | 当前选中的标签⻚的⽂本 |
| currentTabName | 当前选中的标签⻚的名字 |
| currentTabIcon | 当前选中的标签⻚的图标 |
| currentTabToolTip | 当前选中的标签⻚的提⽰信息 |
| tabsCloseable | 标签⻚是否可以关闭 |
| movable | 标签⻚是否可以移动 |
核⼼信号
| 属性 | 说明 |
|---|---|
| currentChanged(int) | 在标签⻚发⽣切换时触发,参数为被点击的选项卡编号. |
| tabBarClicked(int) | 在点击选项卡的标签条的时候触发.参数为被点击的选项卡编号. |
| tabBarDoubleClicked(int) | 在双击选项卡的标签条的时候触发.参数为被点击的选项卡编号. |
| tabCloseRequest(int) | 在标签⻚关闭时触发.参数为被关闭的选项卡编号. |
代码⽰例:使⽤标签⻚管理多组控件
1)在界⾯上创建⼀个 QTabWidget ,和两个按钮.
按钮的 objectName 为 pushButton_add 和 pushButton_remove
![![[Pasted image 20250422104532.png]]](https://i-blog.csdnimg.cn/direct/b4e5c93a82c94675909a457fac319e30.png)
- QTabWidget 中的每个标签⻚都是⼀个 QWidget
- 点击标签⻚,就可以直接切换.
- 右键 QTabWidget ,可以添加标签⻚或者删除标签⻚.
2)编写widget.cpp,进⾏初始化,给标签⻚中放个简单的label - 注意新创建的label的⽗元素,是 ui->tab 和 ui->tab_2 .Qt中使⽤⽗⼦关系决定该控件"在哪⾥".
#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//在每个标签页中添加一个label
QLabel* label1 = new QLabel(ui->tab);
label1->setText("标签页1");
label1->resize(100, 50);
QLabel* label2 = new QLabel(ui->tab_2);
label2->setText("标签页2");
label2->resize(100, 50);
}
![![[Pasted image 20250422113806.png]]](https://i-blog.csdnimg.cn/direct/c560e3c538e8438bbab5db8ea2d7b88b.png)
3)编写按钮的slot函数
- 使⽤ count() 获取到标签⻚的个数.
- 使⽤ addTab 新增标签⻚.
- 使⽤ removeTab 删除标签⻚.
- 使⽤ currentIndex 获取到当前标签⻚的下标.
- 使⽤ setCurrentIndex 切换当前标签⻚.
void Widget::on_pushButton_add_clicked()
{
//使用addTab方法创建新的标签页
//参数1指定一个QWidget,
//参数2指定一个标签页的text(标题),此处标题是Tab+数字
int count = ui->tabWidget->count(); //获取到标签页的数量
QWidget* w = new QWidget();
ui->tabWidget->addTab(w, QString("Tab ") + QString::number(count + 1));
//添加Qlabel显示内容
QLabel* label = new QLabel(w);
label->setText(QString("标签页 ") + QString::number(count + 1));
label->resize(100, 50);
//设置新标签页被选中
ui->tabWidget->setCurrentIndex(count);
}
void Widget::on_pushButton_remove_clicked()
{
//拿到选中标签页的下标
int index = ui->tabWidget->currentIndex();
//删除标签页
ui->tabWidget->removeTab(index);
}
void Widget::on_tabWidget_currentChanged(int index)
{
qDebug() << "当前选中的标签页是: " << in

最低0.47元/天 解锁文章
4446

被折叠的 条评论
为什么被折叠?



