【Qt常用控件】—— 容器类控件

目录

1.1 Group Box 

1.2 Tab Widget 


1.1 Group Box 

GroupBox是GUI编程中常见的一种容器类部件,其主要功能是将相关的其他部件组织在一起,并且提供了视觉上的分组效果

  • 注意:不要把 QGroupBox QButtonGroup 混淆. (之前在介绍 QRadionButton 的时候提 到了 QButtonGroup ).

核心属性  

属性
说明
title
分组框的标题
alignment
分组框内部内容的对⻬⽅式
flat
是否是 "扁平" 模式
checkable
是否可选择.
设为 true, 则在 title 前⽅会多出⼀个可勾选的部分.
checked
描述分组框的选择状态 (前提是 checkable 为 true)
  • 分组框只是⼀个⽤来 "美化界⾯" 这样的组件, 并不涉及到⽤⼾交互和业务逻辑. 属于 "锦上添 花" .

代码示例: 给麦当劳案例加上分组框 

1) 在界⾯上创建三个分组框, 并且在分组框内部创建下拉框和微调框. 

  • 注意: 在复制粘贴控件的时候, ⼀定要先选中对应的⽗控件, 再粘贴.

 2) 编写 widget.cpp, 添加初始化下拉框的代码

Widget::Widget(QWidget *parent)
     : QWidget(parent)
     , ui(new Ui::Widget)
{
     ui->setupUi(this);

     ui->comboBox->addItem("巨⽆霸");
     ui->comboBox->addItem("⻨辣鸡腿堡");

     ui->comboBox_2->addItem("薯条");
     ui->comboBox_2->addItem("⻨辣鸡翅");

     ui->comboBox_3->addItem("可乐");
     ui->comboBox_3->addItem("雪碧");
}

 3) 运行程序, 观察效果


1.2 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 

 注意

  • QTabWidget 中的每个标签页都是⼀个 QWidget
  • 点击标签页, 就可以直接切换.
  • 右键 QTabWidget , 可以添加标签⻚或者删除标签页

2) 编写 widget.cpp, 进⾏初始化, 给标签页中放个简单的 label  

  • 注意新创建的 label 的⽗元素, 是 ui->tab ui->tab_2 . Qt 中使⽤⽗⼦关系决定该控件 "在 哪⾥".
QLabel* label = new QLabel(ui->tab);
label->setText("标签⻚1");
label->resize(100, 50);

QLabel* label2 = new QLabel(ui->tab_2);
label2->setText("标签⻚2");
label2->resize(100, 50);
3) 编写按钮的 slot 函数
  • 使⽤ count() 获取到标签⻚的个数.
  • 使⽤ addTab 新增标签⻚.
  • 使⽤ removeTab 删除标签⻚.
  • 使⽤ currentIndex 获取到当前标签⻚的下标.
  • 使⽤ setCurrentIndex 切换当前标签页.
void Widget::on_pushButton_add_clicked()
{
     // 获取当前有⼏个标签⻚了
     int count = ui->tabWidget->count();
     // 创建新的 widget
     QWidget* w = new QWidget();
     ui->tabWidget->addTab(w, QString("Tab ") + QString::number(count + 1));
     // 给 widget 中添加 label
     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);
}

4) 编写 QTabWidget currentChanged 函数  

void Widget::on_tabWidget_currentChanged(int index)
{
    qDebug() << "当前选中标签⻚为: " << index;
}
5) 运⾏程序, 观察效果
  • 点击新建标签页, 可以创建出新的标签.
  • 点击删除当前标签页, 可以删除标签.
  • 切换标签页时, 可以看到 qDebug 打印出的标签页编号.

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

起飞的风筝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值