回复: QTabwidget 中QTabbar的风格设置问题
#6 [iiiyyyhhhsss 10-24 10:00]
我试过n种方法了
我想你把“标签”和“标签栏”两个概念弄乱了
我是说单个标签不是QWidget的子类,并不是说QTabBar不是QWidget的子类
其实仔细研究一下QTabBar就会发现很多奇怪的事情,
例如:
创建一个tabBar,然后addTab一次,然后用以下代码
tabBar->setTabsClosable(true);
QObject *button=tabBar->children().at(0);
textEdit->append(button->metaObject()->className());
就会发现每个标签上的关闭按钮是CloseButton类,但是我发现qt里根本没有什么CloseButton类,后来我发现它是自定义的,
继承自QAbstractButton类
例如:
创建一个tabBar,然后addTab一次,然后用以下代码
tabBar->setTabsClosable(true);
textEdit.append(QString::number(tabBar->children().count()));
你就会发现此时,tabBar一共有三个子控件
其中一个是标签上的CloseButton,另外两个是ToolButton,就是使得标签左右移动的那两个按钮
根本没有发现有关单个标签的信息,就更别说获得单个标签的指针了
我现在连单个标签是什么类都不知道,继承自什么类也不知道
#7 [iiiyyyhhhsss 10-24 10:07]
再例如:
刚才不是说了每个标签上的关闭按钮是CloseButton吗,
然后我希望用查找每个标签上的CloaeButton按钮的Parent信息来找有关标签的信息
但是却发现CloseButton的parent是QTabBar,而不是单个标签
我原来的构想是:closeButton的parent是标签,标签的parent是标签栏
但偏偏closeButton的parent就是标签栏,中间根本没有什么有关标签的东西
#8 [iiiyyyhhhsss 10-24 10:16]
其实要获得QTabWidget里的QTabBar指针,不用继承那么麻烦
只要QTabBar *tabBar=tabWidget->findChildren().at(0);
就可以了
#9 [rqzrqh 10-24 11:46]
好像是没有这个标签部件,直接在一个区域内画图
实际上的tab也只是QTabBar私有数据中的一个结构体
#10 [iiiyyyhhhsss 10-24 14:55]
也就是说基本上是不可能对QTabBar的tab单独设置样式了?