Qt之QToolBox

//
// addItem() //添加部件
// insertItem() //特定索引插入部件
// count() //返回item个数
// currentIndex() //返回当前部件index
// currentWidget() //返回当前部件
// setCurrentWidget() //setCurrentIndex()
// currentChanged() //current index发生改变
// indexOf() //返回部件的索引
// widget() //返回特定索引的部件


public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QWidget* initWidget(const QString&,const QString&,const QString&);
public slots:
    void change();
private:
    QToolBox *tb;
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,600);
    tb = new QToolBox(this);
    tb->resize(400,400);
    QWidget* w = initWidget(":/image/1.jpg","张三丰","打太极");
    QWidget* w1 = initWidget(":/image/4.png","星宿老仙","放毒");
    tb->addItem(w,QIcon(":/image/3.ico"),"武侠");
    tb->addItem(w1,QIcon(":/image/3.ico"),"坏人");
    tb->move(100,100);
    QPushButton *btn = new QPushButton("下一个",this);
    btn->move(50,50);
    connect(btn,&QPushButton::clicked,this,&MainWindow::change);
}
QWidget* MainWindow::initWidget(const QString& head,const QString& name,const QString& desc)
{
    QWidget* w = new QWidget;
    QLabel* h = new QLabel(w);
    h->setPixmap(QPixmap(head));
    h->setScaledContents(true);
    h->resize(30,30);
    QLabel* n = new QLabel(w);
    n->setText(name);
    QLabel* d = new QLabel;
    d->setText(desc);
    //设置文字颜色
    n->setStyleSheet(QString("color: %1;").arg("rgb(255,0,0)"));
    d->setStyleSheet(QString("color: %1;").arg("rgb(0,255,0)"));
   QVBoxLayout* pvlayout = new QVBoxLayout;
    pvlayout->addStretch();
    pvlayout->addWidget(n);
    pvlayout->addWidget(d);
    pvlayout->addStretch();
    pvlayout->setSpacing(5);
    pvlayout->setContentsMargins(0,0,0,0);
    QHBoxLayout* phlayout = new QHBoxLayout;
    phlayout->addWidget(h);
    phlayout->addLayout(pvlayout);
    phlayout->addStretch();
    phlayout->setContentsMargins(0,0,0,0);
    w->setLayout(phlayout);
    return w;
}
void MainWindow::change()
{
    tb->setCurrentWidget(tb->widget((tb->currentIndex()+1)%2));
}

运行结果:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值