当前位置:   article > 正文

QT QTabWidget 使用_qt tabwidget 只显示某一tab

qt tabwidget 只显示某一tab

简介

QTabWidget 为选项卡小部件,提供一个选项卡栏(参见 QTabBar)和一个“页面区域”,用于显示与每个选项卡相关的页面。默认情况下,选项卡栏显示在页面区域的上方,但是可以使用不同的配置(请参见 TabPosition)。每个选项卡都与不同的小部件(称为页面)相关联。页面区域中只显示当前页面;其他所有页面都隐藏。用户可以通过单击其选项卡或按 Alt+ 字母快捷键(如果有)来显示不同的页面。
使用 QTabWidget 的正常方法是执行以下操作:
创建一个 QTabWidget。
为选项卡对话框中的每个页面创建一个 QWidget,但不要为它们指定父窗口小部件。
将子窗口小部件插入页面窗口小部件,使用布局将其定位为正常位置。
调用addTab()或insertTab()将页面小部件放入选项卡小部件,为每个选项卡提供一个带有可选键盘快捷键的合适标签。
先看最下面的示例代码的执行效果图:
在这里插入图片描述

属性相关方法

// 返回选项卡栏中的选项卡数
int count() const

// 返回当前选项卡页的索引位置    
int currentIndex() const

// 返回当前选项卡页的索引位置    
void setCurrentIndex(int index)

// 如何省略选项卡栏中的文本   
void setElideMode(Qt::TextElideMode mode)

// 设置选项卡栏中图标的大小
void setIconSize(const QSize &size)
    
// 设置用户是否可以在选项卡栏区域内移动选项卡    
void setMovable(bool movable)
    
// 设置为true,则当选项卡栏包含少于2个选项卡时,它将自动隐藏
void setTabBarAutoHide(bool enabled)
    
// 设置选项卡在此选项卡小部件中的位置
void setTabPosition(QTabWidget::TabPosition position)
    
// 设置选项卡小部件中选项卡的形状
void setTabShape(QTabWidget::TabShape s)

// 设置是否将关闭按钮自动添加到每个选项卡,默认为false    
void setTabsClosable(bool closeable)

// 当选项卡栏有许多选项卡时,此属性决定是否应使用按钮滚动选项卡    
void setUsesScrollButtons(bool useButtons)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

增删选项的方法

// 添加选项卡
int addTab(QWidget *page, const QString &label)
int addTab(QWidget *page, const QIcon &icon, const QString &label)

// 插入选项卡
int insertTab(int index, QWidget *page, const QString &label)
int insertTab(int index, QWidget *page, const QIcon &icon, const QString &label)

// 清空选项卡
void clear()

// 移除选项卡
void removeTab(int index)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

选项栏和内容控件

// 获取内部的TabBar
QTabBar * tabBar() const

// 获取指向具有给定索引的页面小部件
QWidget * widget(int index) const

// 查找小部件的索引位置
int indexOf(QWidget *w) const
    
// 获取当前选择tab指向的子页面    
QWidget * currentWidget() const    
    
// 获取角落控件
QWidget * cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const
// 设置角落控件    
void setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

选项修改

// 设置tab使能
bool isTabEnabled(int index) const
// 是否可用    
void setTabEnabled(int index, bool enable)

// 是否可见   
bool isTabVisible(int index) const
// 设置可见    
void setTabVisible(int index, bool visible)
    
// 获取tab上的图标    
QIcon tabIcon(int index) const
// 设置tab上的图标     
void setTabIcon(int index, const QIcon &icon)
    
// 获取tab的文本    
QString tabText(int index) const
// 设置tab的文本    
void setTabText(int index, const QString &label)
    
// 获取tab的ToolTip    
QString tabToolTip(int index) const
// 设置tab的ToolTip     
void setTabToolTip(int index, const QString &tip)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

示例代码

void Widget::initTabWidget()
{
    QHBoxLayout* lay = new QHBoxLayout(this);

    QTabWidget *pTabWidget = new QTabWidget(this);
    pTabWidget->setTabsClosable(true);
    pTabWidget->setMovable(true);
    pTabWidget->setTabPosition(QTabWidget::North);
    pTabWidget->setTabShape(QTabWidget::Rounded);  //梯形tab

    QWidget *w1 = new QWidget;
    w1->setStyleSheet("background-color:rgb(54,54,54)");

    QWidget *w2 = new QWidget;
    w2->setStyleSheet("background-color:rgb(54,154,54)");

    QWidget *w3 = new QWidget;
    w3->setStyleSheet("background-color:rgb(54,54,154)");

    pTabWidget->insertTab(0, w1, "tab1");
    pTabWidget->insertTab(1, w2, "tab2");
    pTabWidget->insertTab(2, w3, "tab3");
    //pTabWidget->addTab(new QTabBar, "");

    //Form* f = new Form;
    //pTabWidget->insertTab(3, f, "tab4");

    //pTabWidget->setTabVisible(2, false);
    pTabWidget->setTabToolTip(2, "this is tab2");

    lay->addWidget(pTabWidget);

    /*
   Q_SIGNALS:
       void currentChanged(int index);
       void tabCloseRequested(int index);
       void tabBarClicked(int index);
       void tabBarDoubleClicked(int index);
       */

    connect(pTabWidget, &QTabWidget::currentChanged, [=](int index){
        qDebug() << "index = " << index;
    });

    connect(pTabWidget, &QTabWidget::tabBarDoubleClicked, [=](int index){
        qDebug() << "tabBarDoubleClicked index = " << index;
    });

    connect(pTabWidget, &QTabWidget::tabBarClicked, [=](int index){
        qDebug() << "tabBarClicked index = " << index;
    });

    connect(pTabWidget, &QTabWidget::tabCloseRequested, [=](int index){
        qDebug() << "tabCloseRequested index = " << index;
        pTabWidget->removeTab(index);  // 关闭tab
    });
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

源代码

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号