我正在使用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模式也不起作用,因为我们已经在左侧设置了工具按钮。
如果没有选中标签,有人可以指导我如何删除空格(屏幕截图中的最后一个标签)吗?
答案 0 :(得分:0)
你必须:
std::map<int,QToolButton> toolbutton_by_index
QTabWidget.currentChanged
时,停用除所选你可以这样做第二部分:
std::for_each(toolbutton_by_index.begin(), toolbutton_by_index.end(),
[&index](auto pair){
(pair.first == index)?pair.second->hide():pair.second->show()});