QTabWidget常用api、信号槽
-
添加/删除tab页
int addTab(QWidget *widget, const QString &);
int addTab(QWidget *widget, const QIcon& icon, const QString &label);
int insertTab(int index, QWidget *widget, const QString &);
int insertTab(int index, QWidget *widget, const QIcon& icon, const QString &label);
void removeTab(int index);
如上insertTab和addTab区别在于insertTab可以指定
-
属性设置
//设置方向
tabWidget->setTabPosition(QTabWidget::North);
//设置tab是否含有x进行关闭
tabWidget->setTabsClosable(true);
//设置tab形状tixing
tabWidget->setTabShape(QTabWidget::Triangular);
//设置tab是否可移动
-
信号与槽
槽函数:
void setCurrentIndex(int index);
void setCurrentWidget(QWidget *widget);
信号:
void currentChanged(int index); //切换tab页
void tabCloseRequested(int index); //点击close关闭tab页
void tabBarClicked(int index); //tab页被单击
void tabBarDoubleClicked(int index); //tab页被双击
bash
QTabWidget* tabWidget = new QTabWidget(this);
QWidget *w1 = new QWidget(this);
w1->setStyleSheet("background-color:red");
QWidget *w2 = new QWidget(this);
w2->setStyleSheet("background-color:green");
QWidget *w3 = new QWidget(this);
w3->setStyleSheet("background-color:gray");
//添加tab
tabWidget->insertTab(0, w1, "text_1");
tabWidget->insertTab(1, w2, "text_2");
tabWidget->insertTab(2, w3, "text_3");
//设置文本提示
tabWidget->setTabToolTip(1, "this is text_2 display.");
//设置方向
tabWidget->setTabPosition(QTabWidget::North);
//设置tab是否含有x进行关闭
tabWidget->setTabsClosable(true);
//设置tab形状tixing
tabWidget->setTabShape(QTabWidget::Triangular);
//设置tab是否可移动
tabWidget->setMovable(true);
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(tabWidget);
setLayout(layout);
//常用信号
connect(tabWidget, &QTabWidget::currentChanged, this, [=](int index){
qDebug() << "current changed index: " << index;
qDebug() << "current text: " << tabWidget->tabText(index);
});
connect(tabWidget, &QTabWidget::tabBarClicked, this, [=](int index){
qDebug() << "tabbar clicked index: " << index;
});
connect(tabWidget, &QTabWidget::tabBarDoubleClicked, this, [=](int index){
qDebug() << "tabbar double clicked index: " << index;
});
//点击x进行关闭tab,该信号被触发
connect(tabWidget, &QTabWidget::tabCloseRequested, this, [=](int index){
qDebug() << "tab close requested index: " << index;
tabWidget->removeTab(index);
});

QTabWidget qss样式表
bash
/*把显示界面向上移动*/
QTabWidget::pane
{
border-top:1px solid #EAEAEA;
position:absolute;
top:-0.1px;
}
QTabBar::tab
{
width:100px;
height:32px;
font-size:16px;
font-family:Microsoft YaHei;
font-weight:400;
background:#FFFFFF;
border:2px solid #FFFFFF;
border-bottom-color:#FFFFFF;
border-top-left-radius:4px;
border-top-right-radius:4px;
padding:20px;
}
QTabBar::tab:selected
{
color:#FFFFFF;
border-color:#FFFFFF;
border-bottom-color:4BA4F2;
}
QTabBar::tab:!selected
{
color:#B2B2B2;
border-color:#FFFFFF;
border-bottom-color:FFFFFF;
}
QTabBar::tab:hover:!selected
{
color:red; /*鼠标悬停时,未选中标签文字颜色变深*/
background-color:#F5F5F5; /*背景设置为浅灰色以区别*/
}
