Qt之容器控件(QToolBox)
简述QToolBox类提供一列带标签的窗口小部件项目。功能详述工具箱是一个小部件,在这个小部件显示着一列带标签的选项卡。其中,当前选项卡下显示的当前项目。每个项目都有一个itemText(),一个可选的itemIcon(),一个可选的itemToolTip()和一个widget()。可以使用setItemText(),setItemIcon()和setItemToolTip()更改项目的属...
简述
QToolBox类提供一列带标签的窗口小部件项目。
功能详述
工具箱是一个小部件,在这个小部件显示着一列带标签的选项卡。其中,当前选项卡下显示的当前项目。
每个项目都有一个itemText(),一个可选的itemIcon(),一个可选的itemToolTip()和一个widget()。可以使用setItemText(),setItemIcon()和setItemToolTip()更改项目的属性。可以使setItemEnabled()分别启用或禁用每个项目。
使用addItem()添加项目,或使用insertItem()在特定位置插入项目。项目总数由count()给出。可以使用delete删除项目,也可以使用removeItem()从工具箱中删除项目。组合removeItem()和insertItem()可以将项目移动到不同的位置。
当前项目窗口小部件的索引由currentIndex()返回,并使用setCurrentIndex()进行设置。可以使用indexOf()找到特定项目的索引,并且给定索引处的项目由item()返回。
当前项目更改时,将发出currentChanged()信号。
使用
效果
上面的效果模仿了Qt Designer的导航栏。
源码
struct User {
QString strName; // 名字
QString strIcon; // 图像
} widget[2][3] = {
{
{"Horizontal Spacer", ":/picture/horizontal_spacer.png"},
{"Vertical Spacer", ":/picture/vertical_spacer.png"}
},
{
{"Push Button", ":/picture/pushbutton.png"},
{"Tool Button", ":/picture/tool_button.png"}
}
};
QStringList groupList = {"Spacers", "Buttons"};
QToolBox *toolBox = new QToolBox;
toolBox->setContentsMargins(0, 0, 0, 0);
for (int i = 0; i < static_cast<int>( sizeof (widget)/sizeof (widget[0]) ); i++) {
QGroupBox *groupBox = new QGroupBox(this);
groupBox->setContentsMargins(0, 0, 0, 0);
groupBox->setFlat(true);
groupBox->setStyleSheet("QGroupBox {background-color:white}");
QVBoxLayout *vLayout = new QVBoxLayout(groupBox);
vLayout->setMargin(0);
for (int j = 0; j < static_cast<int>( sizeof (widget[0])/sizeof (widget[0][0]) ); j++) {
QPushButton *itemBtn = new QPushButton;
itemBtn->setFlat(true);
itemBtn->setStyleSheet("QPushButton {text-align:left}");
itemBtn->setIcon(QIcon(widget[i][j].strIcon));
itemBtn->setText(widget[i][j].strName);
vLayout->addWidget(itemBtn);
}
groupBox->setLayout(vLayout);
toolBox->addItem(groupBox, groupList[i]);
}
QGridLayout *gridLayout = new QGridLayout;
gridLayout->addWidget(toolBox);
this->setLayout(gridLayout);
QTooBox是一个很常见的控件种类,比如QQ好友列表。
常用设置
添加条目
toolBox->addItem(groupBox, "第一个条目");
toolBox->addItem(groupBox, QIcon(":/picture/icon.jpg"), "第二个条目");//带icon
在添加条目的时候,我们需要指定条目名称,同时可以决定是否设定icon。
插入条目
toolBox->insertItem(1, groupBox, "第一个条目");
toolBox->insertItem(1, groupBox, QIcon(":/picture/icon.jpg"), "第二个条目");//带icon
移除条目
toolBox->removeItem(1)
使能条目
toolBox->setItemEnabled(1, true);
信号槽
槽函数
名称 | 描述 |
---|---|
setCurrentIndex(int index) | 设置当前条目索引 |
setCurrentWidget(QWidget *widget) | 指定当前控件 |
信号
名称 | 描述 |
---|---|
currentChanged(int index) | 当控件改变时触发,并传递改变后的条目的索引值 |
引用
[1] Qt助手
更多推荐
所有评论(0)