作者及原代码链接:跟小豆君学Qt
跟着学习;完整实现代码;示例截图;
QFrame:带边框的QWidget,有突起或凹陷的效果;
QScrollArea: 滚动窗口类,提供了一个垂直和水平的滚动条,用以浏览整个窗口;
- Qt::ScrollBarAsNeeded:无法完全显示窗口时,显示滚动条,否则不显示;
- Qt::ScrollBarAlwaysOff:不显示滚动条;
- Qt::ScrollBarAlwaysOn:始终显示滚动条;
SizeAdjustPolicy
- QAbstractScrollArea::AdjustIgnored:视口改变大小,滚动区域并不改变大小;
- QAbstractScrollArea::AdjustToContents:视口改变大小,滚动区域也改变大小;
- QAbstractScrollArea::AdjustToContentsOnFirstShow:在第一次显示时就改变滚动区域的大小;
QGroupBox: 多个控件表示同一类操作或显示时, 用一个矩形框包起这些控件
- 标题位置 alignment
- 是否需要扁平化处理flat
- 是否可选checkable,已经被选中
QTabWidget:显示不同的信息窗口
每个标签都与一个tab页关联,当激活一个标签,则对应的tab页显示,其它tab页隐藏。从左至右每个标签对应索引0~n
documentMode:可见区域是否以文档模式显示;
elideMode:当标签文字很长时,对于标签文字显示应该采用的省略策略;
- Qt::ElideLeft:省略号在左边。
- Qt::ElideRight:省略号在右边。
- Qt::ElideMiddle:省略号在中间。
- Qt::ElideNone:显示全部文字。
moveable:是否可交换标签和其它标签前后顺序;
tabBarAutoHide:当只有一个标签时,该标签可以自动隐藏;
tabPosition:标签可以放在可见区域的位置;
- QTabWidget::North:(北)上方。
- QTabWidget::South:(南)下方。
- QTabWidget::West:(西)左方。
- QTabWidget::East:(东)右方。
tabShape:签也不同的形状;
- QTabWidget::Rounded:默认矩形。
- QTabWidget::Triangular:三角形。
tabsClosable:标签是否可以关闭;
usesScrollButtons:标签多了,可以使用滚动按钮;
QToolBox:类似于QQ的分组界面;
count用来记录分组item的个数,currentIndex记录当前展开的item页。并且索引也都是从0开始;
示例一(QFrame / QScrollArea / QGroupBox):
对应控件:
运行结果:
对应代码实现:
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QtMath>
#include <QGroupBox>
#include <QScrollArea>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// frame 属性
ui->frame->setFrameShadow(QFrame::Raised);
ui->frame->setFrameShape(QFrame::Box);
ui->frame->setMidLineWidth(5);
ui->frame->setLineWidth(2);
// QScrollArea 属性
//创建label作为滚动区域的中心部件,设置label最小宽度和高度,以便可以有滚动条出现
QLabel* label = new QLabel("scroll\area\nneed\ndisplay\nme");
label->setMinimumHeight(500);
label->setMinimumWidth(600);
ui->scrollArea->setWidget(label);
// QScrollBar 属性
QStringList textList;
textList << "ScrollBarAsNeeded" <<"ScrollBarAlwaysOff" << "ScrollBarAlwaysOn";
ui->comboBox->addItems(textList);
ui->comboBox_2->addItems(textList);
// QGroupBox 属性
ui->groupBox->setCheckable(true);
ui->groupBox_2->setCheckable(true);
// sizeAdjustPolicy
textList.clear();
textList << "AdjustIgnored" << "AdjustToContentsOnFirstShow" << "AdjustToContents";
ui->comboBox_3->addItems(textList);
// alignment
textList.clear();
textList << "AlignLeft" <<"AlignRight" << "AlignHCenter" << "AlignJustify";
ui->comboBox_4->addItems(textList);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_comboBox_currentIndexChanged(int index)
{
ui->scrollArea->setHorizontalScrollBarPolicy((Qt::ScrollBarPolicy)index);
}
void Widget::on_comboBox_2_currentIndexChanged(int index)
{
ui->scrollArea->setVerticalScrollBarPolicy((Qt::ScrollBarPolicy)index);
}
void Widget::on_comboBox_3_currentIndexChanged(int index)
{
ui->scrollArea->setSizeAdjustPolicy((QAbstractScrollArea::SizeAdjustPolicy)index);
}
void Widget::on_comboBox_4_currentIndexChanged(int index)
{
ui->groupBox_4->setAlignment(qPow(2, index));
}
void Widget::on_checkBox_toggled(bool checked)
{
ui->groupBox_4->setFlat(checked);
}
示例二(QFrame / QTabWidget / QToolBox)
对应控件:
运行界面:
示例代码(widget.cpp):
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// QTabWidget:标签省略
QStringList textList;
textList << "ElideLeft" <<"ElideRight" << "ElideMiddle" << "ElideNone";
ui->elideModel->addItems(textList);
// 标签位置:
textList.clear();
textList << "North" << "South" << "West" << "East";
ui->tabPosition->addItems(textList);
// 标签形状
textList.clear();
textList << "Rounded" << "Triangular";
ui->tabShape->addItems(textList);
// 连接关闭槽
connect(ui->tabWidget, &QTabWidget::tabCloseRequested,
ui->tabWidget, &QTabWidget::removeTab);
// 添加标签
ui->tabWidget->addTab(new QLabel("Add Tab"), tr("third song"));
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_elideModel_currentIndexChanged(int index)
{
ui->tabWidget->setElideMode((Qt::TextElideMode)index);
}
void Widget::on_tabPosition_currentIndexChanged(int index)
{
ui->tabWidget->setTabPosition((QTabWidget::TabPosition)index);
}
void Widget::on_tabShape_currentIndexChanged(int index)
{
ui->tabWidget->setTabShape((QTabWidget::TabShape)index);
}
void Widget::on_DocumentMode_toggled(bool checked)
{
ui->tabWidget->setDocumentMode(checked);
}
void Widget::on_moveable_toggled(bool checked)
{
ui->tabWidget->setMovable(checked);
}
void Widget::on_barAutoHide_toggled(bool checked)
{
ui->tabWidget->setTabBarAutoHide(checked);
}
void Widget::on_closeble_toggled(bool checked)
{
ui->tabWidget->setTabsClosable(checked);
}
void Widget::on_userScrollButton_toggled(bool checked)
{
ui->tabWidget->setUsesScrollButtons(checked);
}
void Widget::on_btn_insert_clicked()
{
ui->toolBox->addItem(new QLabel("new item"), tr("untitled"));
}
void Widget::on_btn_delete_clicked()
{
int index = ui->toolBox->currentIndex();
if (index != -1){
ui->toolBox->removeItem(index);
}
}