6.容器类控件
①GroupBox 带标题分组框
属性 | 说明 |
title | 分组框的标题 |
alignment | 分组框内部内容的对齐方式 |
flat | 是否是"扁平"模式 |
checkable | 是否可选择 设为true,则在title前方会多出一个可勾选的部分. |
check | 描述分组框的选择状态(前提是checkable为true) |
分组框只是一个用来"美化界面"这样的组件,并不涉及到用户交互和业务逻辑.属于"锦上添花”
①给麦当劳案例加上分组框
#include "widget.h"
#include "ui_widget.h"
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("雪碧");
}
Widget::~Widget()
{
delete ui;
}
②Tab Widget 带标签页的控件
属性 | 说明 |
tabPosition | 标签页所在的位置 North:上方 South:下方 West:左侧 East:右侧 |
currentlndex | 当前选中了第几个标签页(从0开始计算) |
currentTabText | 当前选中的标签页的文本 |
currentTabName | 当前选中的标签页的名字 |
currentTablcon | 当前选中的标签页的图标 |
currentTabToolTip | 当前选中的标签页的提示信息 |
tabsCloseable | 标签页是否可以关闭 |
movable | 标签页是否可以移动 |
核心信号
属性 | 说明 |
currentChanged(int) | 在标签页发生切换时触发,参数为被点击的选项卡编号 |
tabBarClicked(int) | 在点击选项卡的标签条的时候触发.参数为被点击的选项卡编号 |
tabBarDoubleClicked(int) | 在双击选项卡的标签条的时候触发.参数为被点击的选项卡编号 |
tabCloseRequest(int) | 在标签页关闭时触发.参数为被关闭的选项卡编号 |
QTabwidget
中的每个标签页都是一个QWidget
点击标签页,就可以直接切换
右键QTabwidget
,可以添加标签页或者删除标签页
①使用标签页管理多组控件
注意新创建的label的父元素,是ui->tab和ui->tab_2.Qt中使用父子关系决定该控件"在哪里”
#include "widget.h"
#include "ui_widget.h"
#include<QLabel>
#include<QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
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);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_add_clicked()
{
//获取当前有几个标签页
int count = ui->tabWidget->count();
//创建新的标签页
QWidget* w = new QWidget();
ui->tabWidget->addTab(w,QString("Tab ") + QString::number(count+1));
//给widget中添加label
QLabel* label = new QLabel(w);
label->setText(("标签页 ") + 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() << "当前选中标签页为:标签页" << index+1;
}