好吧,我认为你不能只用一个QTabWidget.首先,你确定你需要使用QTabWidget但不是QTabBar吗?
无论如何,你可以找到答案QSpacerItem和两个 QTabBars.
QTabBars用你的标签创建两个;QHBoxLayout;QSpacerItem使用展开策略添加,然后添加最后一个栏;问题是 - 默认选择每个第一个栏QTabBar.它通过在每个上添加空标签来解决QTabBar.
一些示例代码:
_firstBar = new QTabBar(this);
_firstBar->addTab("");
_firstBar->addTab("First tab");
_firstBar->addTab("Second tab");
_firstBar->addTab("Third tab");
_firstBar->addTab("Fourth tab");
_firstBar->setDrawBase(false);
_firstBar->setStyleSheet("QTabBar::tab:first { max-width: 0px; border: 0px }");
_secondBar = new QTabBar(this);
_secondBar->addTab("");
_secondBar->addTab("Fifth bar");
_secondBar->addTab("Sixth bar");
_secondBar->setDrawBase(false);
_secondBar->setStyleSheet("QTabBar::tab:first { max-width: 0px; border: 0px }");
QHBoxLayout *lay = new QHBoxLayout(ui->centralWidget);
lay->addWidget(_firstBar);
lay->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed));
lay->addWidget(_secondBar);
connect(_firstBar, &QTabBar::currentChanged, this, &MainWindow::showFirstBarWidget);
connect(_secondBar, &QTabBar::currentChanged, this, &MainWindow::showSecondBarWidget);
_firstBar->setCurrentIndex(1);
Run Code Online (Sandbox Code Playgroud)
这里的插槽:
void MainWindow::showFirstBarWidget(int index)
{
if(index == 0)
return;
_secondBar->setCurrentIndex(0);
switch(index) {
// Here code show/hide your QWidget by index
}
}
void MainWindow::showSecondBarWidget(int index)
{
if(index == 0)
return;
_firstBar->setCurrentIndex(0);
switch(index) {
// Here code show/hide your QWidget by index
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |