ToolBox是容器组(Containers)中的一员。Containers包括:
(1)Group Box:组框
(2)Scroll Area:滚动区域
(3)Tool Box:工具箱
(4)Tab Widget:标签小部件
(5)Stacked Widget:堆叠部件
(6)Frame:帧
(7)Widget:小部件
(8)MDI Area:MDI区域
(9)Dock Widget:停靠窗体部件
(10)QAxWidget:封装Flash的ActiveX控件
QToolBox提供了一种列状的层叠窗体。抽屉效果是软件界面设计中的一种常见形式,以一种动态直观的方式在大小有限的界面上扩展出更多的功能。
本文以工具盒形式实现了Qt工具箱,示例演示如下:
1.功能包括
本文使用到的功能包括:
(1)QToolBox的使用;
(2)QToolButton的使用;
(3)QSpaceItem间距器的使用;
(4)QStyle基础图标的使用;
(5) QToolBox风格qss的使用。
2.功能实现
2.1QToolBox控件添加
新建QToolBoxDlg窗口,添加ToolBox控件。编辑ToolBox增加Layouts、Spacers、Buttons、ItemViews、ItemWidgets、Containers、InputWidgets、DisplayWidgets页面。
2.2Layouts布局管理组内容添加
///Layouts
{
QVBoxLayout *layouts = new QVBoxLayout();
//增加Vertical Layout
QToolButton *verticalLayoutBtn = new QToolButton();
verticalLayoutBtn->setText("Vertical Layout");
verticalLayoutBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
verticalLayoutBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
layouts->addWidget(verticalLayoutBtn);
//增加Horizontal Layout
QToolButton *horizontalLayoutBtn = new QToolButton();
horizontalLayoutBtn->setText("Horizontal Layout");
horizontalLayoutBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
horizontalLayoutBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
layouts->addWidget(horizontalLayoutBtn);
//增加Grid Layout
QToolButton *gridLayoutBtn = new QToolButton();
gridLayoutBtn->setText("Grid Layout");
gridLayoutBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
gridLayoutBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
layouts->addWidget(gridLayoutBtn);
//增加Form Layout
QToolButton *formLayoutBtn = new QToolButton();
formLayoutBtn->setText("Form Layout");
formLayoutBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
formLayoutBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
layouts->addWidget(formLayoutBtn);
//Qt Space间距器
QSpacerItem *spacer = new QSpacerItem(20,20,QSizePolicy::Minimum,QSizePolicy::Expanding);
layouts->addItem(spacer);
layouts->setMargin(10);
ui->Layouts->setLayout(layouts);
}
2.3Spacers空间间隔组内容添加
///Spacers
{
QVBoxLayout *Spacers = new QVBoxLayout();
//增加Horizontal Spacer
QToolButton *horizontalSpacerBtn = new QToolButton();
horizontalSpacerBtn->setText("Horizontal Spacer");
horizontalSpacerBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
horizontalSpacerBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
Spacers->addWidget(horizontalSpacerBtn);
//增加Verical Spacer
QToolButton *verticalSpacerBtn = new QToolButton();
verticalSpacerBtn->setText("Verical Spacer");
verticalSpacerBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
verticalSpacerBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
Spacers->addWidget(verticalSpacerBtn);
QSpacerItem *spacer = new QSpacerItem(20,20,QSizePolicy::Minimum,QSizePolicy::Expanding);
Spacers->addItem(spacer);
Spacers->setMargin(10);
ui->Spacers->setLayout(Spacers);
}
2.4Buttons按钮组内容添加
///Buttons
{
QVBoxLayout *Buttons = new QVBoxLayout();
//增加Push Button
QToolButton *pushBtn = new QToolButton();
pushBtn->setText("Push Button");
pushBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
pushBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
Buttons->addWidget(pushBtn);
//增加Tool Button
QToolButton *toolBtn = new QToolButton();
toolBtn->setText("Tool Button");
toolBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
toolBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
Buttons->addWidget(toolBtn);
//增加Radio Button
QToolButton *radioBtn = new QToolButton();
radioBtn->setText("Radio Button");
radioBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
radioBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
Buttons->addWidget(radioBtn);
//增加Check Button
QToolButton *checkBtn = new QToolButton();
checkBtn->setText("Check Buttonr");
checkBtn->setIcon(QApplication::style()->standardIcon((QStyle::StandardPixmap)index++));
checkBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
Buttons->addWidget(checkBtn);
//增加Command Link Button
QToolButton *commandLinkBtn = new QToolButton();
commandLinkBtn