基于C++的QT开发问题-01:QTabWidget子标签无法关闭

基于C++的QT开发问题-01:QTabWidget子标签点击红色叉叉后无法关闭

资料参考:

01-Qt类库官方文档

图中红叉叉点击后无反应

问题描述:

​ 如上图所示:使用Qt创建一个MainWindow,将实例化的QTabWidget利用方法setCentralWidget(ui->tabWidget);设置为主部件,使用ui->tabWidget->setTabsClosable(true);设置为可关闭候点击图中红色无法对子标签进行关闭。

this->setCentralWidget(ui->tabWidget);
ui->tabWidget->setTabsClosable(true);
问题产生的原因:

点击红色x后tabwidget只是发送了一个tabCloseRequested信号,并没有产生任何动作(见参考资料01)。通过查阅官网QTabwidget资料(见下图)可知,QTabWidget并没有与关闭子标签相关的槽函数只提供了一个关闭子标签的成员函数:closeTab(int index) 。

官网相关陈述

解决方法:
1.在窗体类MainWindow类中创建一个槽函数closeTab(int index)
class QWMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    QWMainWindow(QWidget *parent = nullptr);
    ~QWMainWindow();
public slots:
    void closeTab(int index);
private:
    Ui::QWMainWindow *ui;
};
2.在定义的槽函数closeTab(int index)中调用QTabWidget的成员函数removeTab()
void QWMainWindow::closeTab(int index)
{
    ui->tabWidget->removeTab(index);
}
3.窗体初始化时将信号tabCloseRequested与closeTab(int index)连接起来
QWMainWindow::QWMainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::QWMainWindow)
{
    ui->setupUi(this);
    this->setCentralWidget(ui->tabWidget);
    ui->tabWidget->setTabsClosable(true);
    connect(ui->tabWidget,SIGNAL(tabCloseRequested(int)),this,SLOT(closeTab(int)));
}

再次运行程序发现已经可以关闭子标签页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值