Qt堆栈窗口StackedLayout

来源:互联网 发布:车载gps端口检测工具 编辑:程序博客网 时间:2024/04/29 16:13

        先介绍点相关知识,QLayout专门用于管理里几何图形的基础类,是一个抽象类,被 QBoxLayout,QGridLayout,QFormLayout,and QStackedLayout继承。QBoxLayout类用于Widget水平或竖直方向的布局管理,被QHBoxLayout,和QVBoxLayout继承;QGridLayout将网格中Widget布局进行管理;QFormLayout用于管理输入Widget和与其相关的Label;QStackedLayout提供了一关于Widget的堆栈,每次只显示一个Widget,同QTabWidget、QStackedWidget的功能类似。

 

    QPushButton*pbtn1= new QPushButton;
     QPushButton*pbtn2=new QPushButton;
     QPushButton*pbtn3=new QPushButton;

     QStackedLayout *stackedLayout = new QStackedLayout;
     stackedLayout->addWidget(pbtn1);
     stackedLayout->addWidget(pbtn2);
     stackedLayout->addWidget(pbtn3);
    
     connect(pbtn1,SIGNAL(clicked()),this,SLOT(switchItem()));
     connect(pbtn2,SIGNAL(clicked()),this,SLOT(switchItem()));

     connect(pbtn3,SIGNAL(clicked()),this,SLOT(switchItem()));
    
     QVBoxLayout*mainLayout= new QVBoxLayout;
     mainLayout->addLayout(stackedLayout);
     setLayout(mainLayout);

     以上程序实现了QStackedLayout的初始化,还需要添加如下代码:

switchItem()

{
    QPushButton*pbtn = dynamic_cast<QPushButton*>(this->sender());
    if (pbtn)
    {
        if (pbtn == pBtn0)        {
            stackedLayout->setCurrentIndex(0);
        }
        else if (pbtn == pBtn1)        {
            stackedLayout->setCurrentIndex(1);
        }
        else if(pbtn == pBtn[2] )
        {
            stackedLayout->setCurrentIndex(2);        }
    }
}

 

原创粉丝点击