赞
踩
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)
// 添加选项卡
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)
// 获取内部的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)
// 设置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)
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 }); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。