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" ); |
} |
相关文章推荐
- QT中QPainterPath类的功能和使用方法
- 使用Qt编辑关闭窗口程序的一些见解
- 吐槽 qt4.8.1 vs2008 使用qt designer没有转到槽这个功能,真是要老命了,正好碰上初学的我,真是太坏了,
- 联想天逸笔记本关闭Fn功能,直接使用F1~12键
- 组合使用QT的资源管理高级功能简化开发过程
- Qt5 中的QPainterPath类的功能和使用方法
- Qt使用QSqlTableModel执行SQL语句,QLineEdit输入查询条件完成查询功能
- QT中使用槽函数来关闭窗口,导致内存泄露的问题以及解决办法
- 关闭使用条款确认、密码提醒、新用户强制修改密码等功能
- QT中使用QProcess启用外部程序和关闭外部程序
- 使用Qt开发文本编辑器(一):功能介绍
- 关于Qt使用QNetworkAccessManager下载文件(实现断点续传功能)
- Qt5---ftp上传功能(使用组合的办法实现功能,QNetworkAccessManager自动管理分片上传,用QLoggingCategory屏蔽SSL警告)
- win8.1怎么滑动关闭电脑 win8.1滑动关机功能使用教程
- QtNetwork用法(二)之使用QT实现360的ctrl+ctrl功能
- QT中QPainterPath类的功能和使用方法
- QT中QPainterPath类的功能和使用方法
- ROS_Kinetic_24 使用catkin_create_qt_pkg快速创建qt-ros功能包
- 使用Qt的QListWidget完成拖拽功能
- Qt之拦截关闭窗口的QCloseEvent简单使用