上一篇文章介绍如何对QMessgeBox进行使用。本文紧接上文内容继续对Qt的窗体文件开发介绍。
一般主界面会有很多控件和交互区域;如果把所有的控件都放在一个界面全部显示,整个界面就会显得非常臃肿繁琐。那么使用分页式的表格窗体布局就能将不同类型的控件布局到不同的窗体之中,再根据需要选择即可。Qt提供多种叠加窗体布局,如QStackedWidget、QToolBox和QTabWidget等。本文主要介绍QTabWidget的使用,其他窗体使用方式类似。
翻页式表格窗体 QTabWidget
QTabWidget提供像书签式的一页一页的窗口,需要显示哪一页,点击对应的书签标题切换过去即可。
QTabWidget的帮助中对其一般使用流程描述如下:
• Create a QTabWidget.
• Create a QWidget for each of the pages in the tab dialog, but do not specify parent widgets for them.
• Insert child widgets into the page widget, using layouts to position them as normal.
• Call addTab() or insertTab() to put the page widgets into the tab widget, giving each tab a suitable label with an optional keyboard shortcut.
打开上文的项目,我们在ui文件中新建一个tabWigget,将前期的一些空间拖入第一个Page 1之中。
Ui编辑器右侧属性窗口可以对每一页的标题、对象名和图标等进行修改:
tabPosition可以用来修改标签页标题所在位置,分别是上、下、左、右:
TabSharp属性用来修改标签页的形状,有圆形Rounded和三角形triangular两种。
tabWidget提供了一些列的方法供用户来使用,其中比较重要的是addTab(QWidget *page, const QString &label)、insertTab(int index, QWidget *page, const QString &label)等。而比较重要的信号函数包括:
void currentChanged(int index)
void tabBarClicked(int index)
void tabBarDoubleClicked(int index)
void tabCloseRequested(int index)
下面来对界面进行一些构造,用户切换tab后,将当前用户选择的tab名称显示在主窗口的statusBar区域。因此我们需要新建一个出来statusBar()信息的槽函数,后面需要将改槽函数与tabWidget的currentChanged(int index)信号相连,所以定义个参数来接受信号发过来的值。
void currentTabChanged(int); //当前Tab更改处理槽函数
在源代码中对槽函数进行构造:
void mainWindow::currentTabChanged(int index)
{
}
下面在槽函数定义完成槽函数的代码内容:
首先是获取当前选择tab的名称,
QString tittleName = ui->myTabWidget->tabText(index); //获取当前窗口的标题
显示当前窗体的标题到主窗口的状态栏:
statusBar()->showMessage("Current working widget is " + tittleName);
然后在构造函数中建立信号与槽的关联:
connect(ui->myTabWidget,&QTabWidget::currentChanged, this, &mainWindow::currentTabChanged); //建立信号和槽的联系
编译运行代码,选择到一个tab,观看提示框的显示信息:
本文介绍了QTabWidget的使用原理并结合代码开发了一个应用场景。后续将继续介绍Qt 界面开发相关的模块。
欢迎同好沟通交流,批评指正,欢迎关注我的公号:不如起而行之