Qt报错error: ‘QTabBar* QTabWidget::tabBar() const‘ is protected

1、Qt报错error: ‘QTabBar* QTabWidget::tabBar() const’ is protected within this context

 //使用下面语句时报错,本人使用QT3.5版本
 ui->tabWidget->tabBar()->setStyle(new CustomTabStyle);

2、报错原因:

  5.0以下版本tabBar()是受保护的(即私有成员),无法被外部调用,而5.0以上版本Qt则改为公有的了。

3、解决办法

  打开编译库。比如我使用的是linux下的QT编译库v7。把QTabBar* tabBar() const; 改为公有的就可以了,该成员在qtabwidget.h 中。操作如下:
1、打开终端输入

find -name qtabwidget.h

2、打开qtabwidget.h
  比如我查找到的路径为

./toolchain/v7-toolchain/arm-buildroot-linux-gnueabi/sysroot/usr/include/QtGui/qtabwidget.h

  用vim打开qtabwidget.h命令

vim ./toolchain/v7-toolchain/arm-buildroot-linux-gnueabi/sysroot/usr/include/QtGui/qtabwidget.h

3、修改qtabwidget.h
  把下图1protected: 下的QTabBar* tabBar() const; 剪切到public: 下,如图2所示

图1

在这里插入图片描述

图2

在这里插入图片描述

保存:
改完后按Esc,输入下命令按回车保存:

:wq

这时去编译就发现没问题了

总结:

  出现这个问题主要是构建使用的版本低导致如下图版本4.8.7就不行。这时我们只需要去找到他的库对应定义**QTabBar* tabBar() const;**的地方把私有改为公有就可以了。
在这里插入图片描述

注:此方法仅供参考,如有问题,请指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值