Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将两个Qt卡舌向右移动,将其余卡舌向左移动_C++_Css_Qt - Fatal编程技术网

C++ 将两个Qt卡舌向右移动,将其余卡舌向左移动

C++ 将两个Qt卡舌向右移动,将其余卡舌向左移动,c++,css,qt,C++,Css,Qt,我试图弄清楚如何将两个选项卡从QtTabWidget移到右侧,而将其余选项卡移到左侧 选项卡是静态的,不会在运行时添加 以下是我所拥有的: 以下是我想要的: 我尝试过编辑样式表并添加alignment:right但这只会使所有的标签都正确,并且不适用于特定的标签。我还尝试了一些东西,比如float和position:absolute;右:0但是没有运气 我也找不到任何对我有帮助的东西 因此,我的问题是:如何将“配置文件”选项卡和“设置”选项卡移到右侧,而将其余选项卡保留在原来的位置 好吧,我

我试图弄清楚如何将两个选项卡从QtTabWidget移到右侧,而将其余选项卡移到左侧

选项卡是静态的,不会在运行时添加

以下是我所拥有的:

以下是我想要的:

我尝试过编辑样式表并添加
alignment:right但这只会使所有的标签都正确,并且不适用于特定的标签。我还尝试了一些东西,比如
float
position:absolute;右:0但是没有运气

我也找不到任何对我有帮助的东西


因此,我的问题是:如何将“配置文件”选项卡和“设置”选项卡移到右侧,而将其余选项卡保留在原来的位置

好吧,我想你不能只用一个
QTabWidget
。首先,您确定需要使用
QTabWidget
而不是
QTabBar

无论如何,您可以在
QSpacerItem
two
qtabbar
中找到答案

  • 使用选项卡创建两个
    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
    two
    qtabbar
    中找到答案

  • 使用选项卡创建两个
    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一直是一个很好的解决方案