TabWidget
增加页
右键tabWidget,在弹出菜单中选择“插入页”-》“在当前页之前”/“在当前页之后”。
删除页
右键tabWidget,在弹出菜单中选择“2的页1”-》“删除”。其中“2的页1”表示有2个tab,当前选择的是1。
将页面增加到TabWidget上
创建窗体 ServoSelectFrm* ptr = new ServoSelectFrm(); // 关闭时自动销毁 ptr->setAttribute(Qt::WA_DeleteOnClose); //增加tab页,第二个参数是页面的名称 int cur = ui.tabWidget->addTab(ptr, QString::number(ui.tabWidget->count() + 1)); // // ui.tabWidget->setTabIcon(cur, QIcon(":/image/1.ico")); // ui.tabWidget->setCurrentIndex(cur); // ui.tabWidget->setVisible(true);
关闭所有Tab页面
// 删除所有TabWidget页面 ui.tabWidget->clear();
获取当前页面的索引
//获取当前页面的索引,如果没有索引就是-1 int NowIndex = ui.tabWidget->currentIndex();
删除指定索引的页面
if (NowIndex < 0) { return; } ui.tabWidget->removeTab(NowIndex);
tabsClosable 每个页的关闭按钮
注:只是发送信号,不会执行具体的删除动作,要配合QTabWidget::tabCloseRequested写代码删除页面
//tabsClosable 每个页的关闭按钮 //显示关闭按钮 ui.tabWidget->setTabsClosable(true); //隐藏关闭按钮 ui.tabWidget->setTabsClosable(false);

当某个选项卡被关闭时触发事件
(必须通过页面自带的关闭按钮才能触发 tabsClosable=true,通过代码的Remove都不触发的)
QTabWidget::tabCloseRequested
//绑定事件 connect(ui.tabWidget, &QTabWidget::tabCloseRequested, this, &QtWidgetsApplication2::TabControlPageCloseAction); /// <summary> /// Tabcontrol页关闭事件 /// </summary> void QtWidgetsApplication2::TabControlPageCloseAction(int TabPageIndex) { if (TabPageIndex < 0) { return; } QWidget* toDeleteFrm = ui.tabWidget->widget(TabPageIndex);//获取对应索引的页面 toDeleteFrm->close(); }
获取对应索引的tab的文本
//获取对应索引的tab的文本 QString str = ui.tabWidget->tabText(NowIndex);
设置对应索引的页面 使能 与 不使能
//设置对应索引的页面 使能 与 不使能 //使能 ui.tabWidget->setTabEnabled(NowIndex,true); //不使能 ui.tabWidget->setTabEnabled(NowIndex, false);
将当前页转换成窗体对象
//获取当前页的指针 QWidget* wit=ui.tabWidget->currentWidget(); //转换 ServoSelectFrm *fuk= qobject_cast<ServoSelectFrm*>(wit); if (fuk)//转换成功 { fuk->Test1(); }
//如果使用object_cast转换,都会转换成功,好像不分是什么类型都可以转换成功,但是
qobject_cast必须是这个类型的才能转换成功

浙公网安备 33010602011771号