(三十二)多页面切换组件

Qt中多页面切换组件QTabWdget

QTabWdget:

1、  能够在同一窗口中自由切换不同的页面的内容

2、  是一个容器类型组件

3、  提供了友好的页面切换方式

 

使用方式:

1、  创建QTabWidget对象

2、  使用成员函数

int

addTab ( QWidget * page, const QString & label )

int

addTab ( QWidget * page, const QIcon & icon, const QString & label )

int

insertTab ( int index, QWidget * page, const QString & label )

int

insertTab ( int index, QWidget * page, const QIcon & icon, const QString & label )

将其他QWidget组件对象加入该对象中

 

注:

1、  每次加入一个QWidget对象组件都将生成一个新的页面

2、  每次只能加入一个QWidget对象组件

 

向一个页面添加多个组件:

1、  创建容器类组件对象

2、  将多个子组件在容器对象中布局

3、  将容器对象加入QTabWidget中

(三十二)多页面切换组件_第1张图片

 

预定义信号:

void

currentChanged ( int index )

当前显示的页面发生变化,index 为新页面下标

voidtabCloseRequested ( int index )

下标为index 的页面的关闭按钮被点击,发出关闭请求

 

基本用法:

/*设置QTabWidget对象在父组件中的位置与大小*/
m_tabWidget.setParent(this);
m_tabWidget.move(10, 10);
m_tabWidget.resize(200, 200);
 
/*创建子组件*/
QPushButton *btn = new QPushButton(&m_tabWidget);
Btn->setText(“First Tab Page”);
 
/*加入QTabWidget对象生成新页面*/
m_tabWidget.addTab(btn, “1st”);


高级用法:

1、  设置Tab标签的位置 使用成员函数 void setTabPosition (TabPosition p)

参数为枚举变量,可取值有QTabWidget::North、QTabWidget::South、QTabWidget::West、QTabWidget::East 默认情况下,QTabWidget的Tab标签位置为QTabWidget::South

 

2、设置Tab标签的形状 使用成员函数 voidsetTabShape (TabShape s )

参数为枚举变量,可取值QTabWidget::Rounded(默认)、QTabWidget::Triangular

 

3、设置Tab的可关闭模式 使用成员函数 voidsetTabsClosable (bool closeable )

 

//Widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include 
#include 
 
class Widget : public QWidget
{
   Q_OBJECT
   
   QTabWidget m_tabWidget;             
protected slots:
   void onTabCurrentChanged(int index);
   void onTabCloseRequested(int index);
public:
   Widget(QWidget *parent = 0);
   ~Widget();
};
 
#endif // WIDGET_H

//Widget.cpp

#include "Widget.h"
#include 
#include 
#include 
#include 
#include 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    m_tabWidget.setParent(this);			//设置父子关系
    m_tabWidget.move(10, 10);	
    m_tabWidget.resize(200, 200);			//一定不要忘了设置QTabWidget对象的大小,不然QTabWidget将几乎不可见(小成一个点)
    m_tabWidget.setTabPosition(QTabWidget::South);	//设置tab标签的位置
    m_tabWidget.setTabShape(QTabWidget::Triangular);	//设置tab标签的形状
    m_tabWidget.setTabsClosable(true);			//设置页面可以被关闭
	
    QPlainTextEdit* edit = new QPlainTextEdit(&m_tabWidget);
    edit->insertPlainText("1st Tab Page");		

    m_tabWidget.addTab(edit, "1st");

    QWidget* widget = new QWidget(&m_tabWidget);
    QVBoxLayout* layout = new QVBoxLayout();	
    QLabel* lbl = new QLabel(widget);					
    QPushButton* btn = new QPushButton(widget);	

    lbl->setText("2nd Tab Page");
    lbl->setAlignment(Qt::AlignCenter);

    btn->setText("2nd Tab Page");

    layout->addWidget(lbl);	
    layout->addWidget(btn);

    widget->setLayout(layout);		

    m_tabWidget.addTab(widget, "2nd");	

    m_tabWidget.setCurrentIndex(1);		//设置默认的tab页面

	/*信号currentChanged(int)当前显示的tab标签页发生变化,index为新页面的 下标*/
connect(&m_tabWidget, SIGNAL(currentChanged(int)), this, SLOT(onTabCurrentChanged(int)));
/*信号tabCloseRequested(int)能传递当前被关闭的下标的index */
    connect(&m_tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(onTabCloseRequested(int)));
} 
	
void Widget::onTabCurrentChanged(int index)
{
    qDebug() << "Page change to: " << index;
}

void Widget::onTabCloseRequested(int index)
{
/*从QTabWidget对象中移除下标为index的标页,现象就是标签页被关闭了*/
    m_tabWidget.removeTab(index);	
}

Widget::~Widget()
{
    
}


 
  
声明:
此文根据 狄泰学院唐老师的《QT实验分析教程》创作

你可能感兴趣的:(Qt)