C++ 将两个Qt卡舌向右移动,将其余卡舌向左移动
我试图弄清楚如何将两个选项卡从QtTabWidget移到右侧,而将其余选项卡移到左侧 选项卡是静态的,不会在运行时添加 以下是我所拥有的: 以下是我想要的: 我尝试过编辑样式表并添加C++ 将两个Qt卡舌向右移动,将其余卡舌向左移动,c++,css,qt,C++,Css,Qt,我试图弄清楚如何将两个选项卡从QtTabWidget移到右侧,而将其余选项卡移到左侧 选项卡是静态的,不会在运行时添加 以下是我所拥有的: 以下是我想要的: 我尝试过编辑样式表并添加alignment:right但这只会使所有的标签都正确,并且不适用于特定的标签。我还尝试了一些东西,比如float和position:absolute;右:0但是没有运气 我也找不到任何对我有帮助的东西 因此,我的问题是:如何将“配置文件”选项卡和“设置”选项卡移到右侧,而将其余选项卡保留在原来的位置 好吧,我
alignment:right代码>但这只会使所有的标签都正确,并且不适用于特定的标签。我还尝试了一些东西,比如float
和position:absolute;右:0代码>但是没有运气
我也找不到任何对我有帮助的东西
因此,我的问题是:如何将“配置文件”选项卡和“设置”选项卡移到右侧,而将其余选项卡保留在原来的位置 好吧,我想你不能只用一个QTabWidget
。首先,您确定需要使用QTabWidget
而不是QTabBar
无论如何,您可以在QSpacerItem
和twoqtabbar
中找到答案
使用选项卡创建两个qtabbar
李>
创建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);
下面是插槽:
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
}
}
好吧,我想你不能只用一个QTabWidget
。首先,您确定需要使用QTabWidget
而不是QTabBar
无论如何,您可以在QSpacerItem
和twoqtabbar
中找到答案
使用选项卡创建两个qtabbar
李>
创建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);
下面是插槽:
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
}
}
+1:当我把两件东西放在一个小部件的对侧时,使用QSpacerItem一直是一个很好的解决方案+1:当我把两件东西放在一个小部件的对侧时,使用QSpacerItem一直是一个很好的解决方案