QTabWidget中的选项卡文本对齐方式

时间:2015-12-03 12:32:32

标签: qt pyqt qt4 qtabwidget

我正在使用Qt的QTabWidget类。 在TabWidget中,我动态添加新选项卡并将TextElideMode设置为右,以在tabBar中显示工具按钮。

tabWidget = new QTabWidget(this);
m_addNewTab = new QWidget(tabWidget);
m_addNewGridLayout = new QGridLayout(m_addNewTab);
m_addNewWebView = new MyWebView(m_addNewTab);
widget = new QWidget(m_addNewTab);
tb = new QToolButton(widget);
tb->setFixedHeight(20);
tb->setText("<");
tb1 = new QToolButton(widget);
tb1->setFixedHeight(20);
tb1->setText(">");

m_horizontalLayout = new QHBoxLayout(widget);
m_horizontalLayout->addWidget(tb);
m_horizontalLayout->addWidget(tb1);

请参阅下面的屏幕截图,了解示例应用程序的输出。 当选择当前选项卡时,两个工具按钮都应该显示,文本elide模式应该是正确的但是当没有选择tab时,不应该显示工具按钮,但是应该保留文本elide模式。

在下面的屏幕截图中,我可以根据选项卡选择隐藏和显示工具按钮,但是当未选择选项卡时,文本elide模式设置为右,这样我们就能看到不必要的空间(查看最后一个选项卡)。设置文本elide模式也不起作用,因为我们已经在左侧设置了工具按钮。

如果没有选中标签,有人可以指导我如何删除空格(屏幕截图中的最后一个标签)吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

你必须:

  1. 跟踪标签索引和相应的保留小部件(让我们说std::map<int,QToolButton> toolbutton_by_index
  2. 发出QTabWidget.currentChanged时,停用除所选
  3. 之外的所有小部件

    你可以这样做第二部分:

    std::for_each(toolbutton_by_index.begin(), toolbutton_by_index.end(),
            [&index](auto pair){
                (pair.first == index)?pair.second->hide():pair.second->show()});