学习自唐佐林老师的Qt
Widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui/QWidget>
#include <QTabWidget>
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 <QPlainTextEdit>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
m_tabWidget.setParent(this);//设置父组件对象为当前窗口
m_tabWidget.move(10, 10);
m_tabWidget.resize(200, 200);
m_tabWidget.setTabPosition(QTabWidget::South);//设置标签位置
m_tabWidget.setTabShape(QTabWidget::Triangular);//设置标签形状
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");
//添加到QVBoxLayout 布局管理器
layout->addWidget(lbl);
layout->addWidget(btn);
//布局管理器在 widget 中生效
widget->setLayout(layout);
//将布widget 添加到 多页面切换组件,并指定标题
m_tabWidget.addTab(widget, "2nd");
//指定初始页面
m_tabWidget.setCurrentIndex(1);//1 即第二个标签页
//currentChanged(int) 显示页面切换信号,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)
{
m_tabWidget.removeTab(index);//关闭 即 移除对应标签页
}
Widget::~Widget()
{
}
main.cpp
#include <QtGui/QApplication>
#include "Widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}