您的位置:首页 > 编程语言 > Qt开发

Qt:QTabWidget关闭页签功能的使用

2018-01-14 22:37 1301 查看
QTabWidget设置setTabsClosable(true)后所有加进来的tab上都会出现关闭按钮,然后利用QTabWidget的tabCloseRequested(int)信号实现tab的关闭,但是默认的关闭按钮并不好看。有时想设置几个tab不能关闭且把上面的关闭按钮去掉则需要用到QTabBar的一个函数setTabButton(index,position,*widget),把widget设为NULL即可。
((QTabBar*)(tabWidget->tabBar()))->setTabButton(tabWidget->indexOf(widget),QTabBar::RightSide,NULL);
当然一定要在setTabsClosable()后面设置。
如果tab上默认的关闭按钮样式不符合要求,则可设置setTabsClosable(false),然后自定义一个按钮,然后在每个需要有按钮的tab加载时
((QTabBar*)(tabWidget->tabBar()))->setTabButton(tabWidget->indexOf(widget),QTabBar::RightSide,customButton);
然后配置自己的按钮动作信号槽。
如何判断是哪个页签发送的关闭信号呢,可以使用Qt的界面数据存储属性,

(使用setUserData()和userData()),使用这个属性,可能需要自己定义继承自QObejctUserData类的新类.

有些控件是setData,getData。

最普通的关闭页签的代码如下:
#include"mainwindow.h"
#include"ui_mainwindow.h"
#include<QTabWidget>
#include<QTextEdit>
MainWindow::MainWindow(QWidget*parent) :
                    
QMainWindow(parent),
                   
ui(
new
 
Ui::MainWindow)
{
     
ui->setupUi(
this
);
     
connect(ui->tabWidget,SIGNAL(tabCloseRequested(
int
)),
this
,SLOT(removeSubTab(
int
)));
}
 
 
MainWindow::~MainWindow()
{
     
delete
 
ui;
}
 
 
void
 
MainWindow::removeSubTab(
int
 
index)
{
      
ui->tabWidget->removeTab(index);
}
 
 
void
 
MainWindow::on_pushButton_clicked()
{
      
QTextEdit*edit=
new
 
QTextEdit;
      
ui->tabWidget->addTab(edit,
"hitemp1"
);
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: