《Qt》part 10 Qt5.5 状态栏设置

1、普通的状态栏(statusBar)

在程序的普通模式下,状态栏包括连个状态指示器:当前的操作指示,也用于显示状态提示和其他的一些临时消息。分为常规提示、状态提示、临时消息等。

void MainWindow::createStatusBar()
{locationLabel = new QLabel("W999");
locationLabel->setAlignment(Qt::AlignHCenter);
locationLabel->setMininumSize(locationLabel->sizeHint());formulaLabel = new QLabel;
formulaLabel->setIndent(3);statusBar()->addWidget(locationLabel);
statusBar->addWidget(formulaLabel,1);connect(spreadsheet,SIGNAL(currentCellChanged(int,int,int,int)),this,SLOT(updateStatusBar()));
connect(spreadsheet,SIGNAL(modified()),this,SLOT(spreadsheetModified()));
updateStatusBar();}

QMainWindow::statusBar()函数返回一个指向状态栏的指针。[在第一次调用statusBar()函数的时候会创建状态栏。]状态栏只是器是一些简单的QLabel,可以在任何需要的时候改变它们的文本。已经在formulaLabel中添加了一个缩进格式,以便让那些在他里面显示的文本能够与它在左侧边有一个小的偏移量。当把这些QLabel添加到状态栏的时候,它们会自动被重定义为父对象,以便让它们成为状态栏的子对象。

单元格定位指示器只需要非常小的空间,并且在重新定义窗口大小时,任何多余的空间都会分配给位于右侧的单元格公式指示器。这是通过在公式标签的statusBar->addWidget(formulaLabel,1)中调用了一个伸展因子实现的。位置指示器的默认伸展因子为0,这也就意味着它不被伸展,也就没有分隔符那种效果。

当 QStatusBar摆放这些指示器窗口部件时,它会尽量考虑由QWidget::sizeHint()提供的每一个窗口部件的理想大小,然后再对那些可伸展的任意窗口部件进行伸展以填满全部可用空间。一个窗口部件的理想大小取决于这个窗口部件的内容及改变内容时变化的大小。为了避免对定位指示器连续不断地重定义大小,设置它的最小尺寸大小为它能包含的最大数字符(“W999”)和一些空格的总大小。还把它的对齐方式设置为Qt::AlignHCenter,以便可以在水平方向上居中对齐它的文本。

在函数结尾的附近,将函数的信号槽函数连接起来。

updateStatusBar()槽可以更新单元格定位指示器和单元格公式指示器。只要用户把单元格光标移动到一个新的单元格,这个槽就会得到调用。该槽也可以作为一个普通函数而在createStatusBar()的最后用于初始化这些指示器。因为SpreadSheet不会再一开始的时候就发射currentCellChanged()消息,所以还必须这样做。

void MainWindow::spreadsheetModified()
{
setWindowModified(true);
updateStatusBar();
}

spreadsheetModified()槽把windowModifed属性设置为true,用以更新标题栏。这个函数也会更新位置和公式指示器,以便可以让它们反映事件的当前状态。

2、QDockWidget 和 QTreeWidget 树形部件 构成树形选择项

QTreeWidget *treeWidget = new QTreeWidget; //创建树形控件 QStringList headers; //树头
headers << "Name" << "Number";
treeWidget->setHeaderLabels(headers); QStringList rootTextList; //树的根节点
rootTextList << "Root" << "0"; //添加选项 Root --- 0
QTreeWidgetItem *root = new QTreeWidgetItem(treeWidget, rootTextList);
new QTreeWidgetItem(root, QStringList() << QString("Leaf 1") << "1"); //以根节点为父控件,添加选项 Leaf1 ---- 1
QTreeWidgetItem *leaf2 = new QTreeWidgetItem(root,
QStringList() << QString("Leaf 2") << "2"); //以根节点为父控件,添加选项 Leaf2 ---- 2
leaf2->setCheckState(0, Qt::Checked); //为Leaf2 设置勾选窗 QList<QTreeWidgetItem *> rootList;
rootList << root;
treeWidget->insertTopLevelItems(0, rootList); //将树形选项 添加入Tree控件 QDockWidget *dockWidget = new QDockWidget(tr("dockWidget")); //创建锚接部件
dockWidget->setObjectName("dockWidget test");
dockWidget->setAllowedAreas(Qt::RightDockWidgetArea | Qt::LeftDockWidgetArea); //锚接部件 允许停靠的区域,左右
dockWidget->setWidget(treeWidget); //设置锚接部件的内容 TreeWidget
addDockWidget(Qt::RightDockWidgetArea, dockWidget); 

效果:

3、利用treeWidget、treeWidgetItem、dockWidget定制状态栏

《Qt》part 10 Qt5.5 状态栏设置相关推荐

  1. mingw版本下qt与HTML,QT5.10开发(2) 在Windows 10下使用MinGW编译 静态Qt 5.10 release版 详细过程...

    Qt建议安装动态链接Dbug版和编译安装静态链接release版 前提: 先安装动态链接Dbug版,方法:QT5.10开发(1)安装QT5.10 地址:http://blog.csdn.net/qq_ ...

  2. QT使用阿里巴巴矢量图标库设置窗口图标、菜单栏项图标、工具栏项图标、状态栏图标以及将控件设置为图标

    在阿里巴巴矢量图标库官网上下载图标,具体操作在下方有讲解. 在QT项目中设置图标示例. 我总结了一下需要设置图标的地方大致分为5个,如下: 1. 设置窗口图标(利用setWindowIcon()属性实 ...

  3. Qt 5.15.2 QTextEdit无法设置新字体的处理方式

    首发于我的个人博客:xie-kang.com 博客内有更多文章,欢迎大家访问 原文地址 在使用QT 5.15.2 开发的过程中碰到了件怪事,下列代码无法给QTextEdit选中的文字设置字体: QTe ...

  4. Qt菜单栏、工具栏、状态栏介绍及工具栏action的动态增删显示实现方式

    Qt菜单栏.工具栏.状态栏介绍及工具栏action的动态增删显示实现方式 版本说明 版本 作者 日期 备注 0.1 loon 2018.11.12 初稿 目录 文章目录 Qt菜单栏.工具栏.状态栏介绍 ...

  5. 设置代理_如何防止用户更改Windows 10上的代理设置

    如何在Windows 10上禁用代理设置 在Windows 10上,可以使用组策略编辑器和注册表以至少两种不同的方式禁用通过"设置"应用程序(和" Internet选项& ...

  6. Ubuntu 17.10安装Qt 5.10环境与Qt Creator 4.5开发工具(转自linux公社)

    记录下在Ubuntu 17.10搭建Qt环境与安装Qt Creator开发工具的过程.机器装的Linux是Ubuntu 17.10,16.04与17.04的应该也相同. Qt 5.10和Qt 3D S ...

  7. Qt使用教程之指定运行设置(三)

    2019独角兽企业重金招聘Python工程师标准>>> 在指定运行设置(二)一文中,我们介绍了指定调试器设置.为基于Linux的设备指定运行设置.为QNX设备指定运行设置等.本文我们 ...

  8. oppo禁用android系统通知栏,状态栏设置OPPO版

    <状态栏设置 OPPO版>是一款为OPPO手机精心打造的手机美化状态栏的软件.这款软件让手机中平白无奇普普通通的状态栏可以花里胡哨,也更加有了和自己的性格相互匹配的个性!赶快来动手制作属于 ...

  9. 微信尝试刷掌支付;苹果 WWDC 将于 6 月 6 日开幕;Qt Creator 10 发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

最新文章

  1. VMware安装RedHat 6(64位)报错问题
  2. 日志分析利器splunk的搭建、使用、破解
  3. .Net 事件类型的实现和推荐做法
  4. python中的numpy模块和pandas模块的区别_python的numpy模块- 01.pandas基本数据类型
  5. Python之代码性能分析工具(时间+内存)
  6. UltraNumTextBox【实现所有数字输入的同时,可以控制当控件禁用时ForeColor】
  7. 计算两个路径的父亲路径
  8. 把阿拉伯数字1,2,3...转化成一,二,三
  9. python动态调用函数
  10. 程序员新电脑常用软件安装
  11. andriod 无网络逻辑设置和判断
  12. 激战2怎么选最新的服务器,选哪个服好?《激战2》高玩分析各服务器进驻人数...
  13. iphone8位置无法连接服务器,iphone8无法连接到app store怎么办?苹果iphone8连接不到app store解决方法...
  14. 大数据时代如何通过区块链保证数据的稀缺性?
  15. javaFX实现登录界面并跳转
  16. 社交网络中基于张量分解的好友推荐
  17. python笔记 基础语法·第14课 【三局两胜角斗场小游戏,类与对象】
  18. 用API函数使程序标题栏闪烁
  19. cart算法 java_CART算法原理及实现
  20. Window服务器指定某软件/服务开机自启动

热门文章

  1. Linux交互式编程:expect
  2. Midjourney官方中文版在QQ开启内测申请;“Hi,Siri”将成历史,苹果计划修改语音助手唤醒方式|极客头条
  3. scp -Windows本地文件上传服务器,指定端口
  4. 你知道完整的手绘模型贴图制作是怎样的?3Dmax低模制作,手绘贴图全流程
  5. Java 枚举类型原理分析为什么枚举比用静态变量多消耗两倍的内存
  6. [课程设计]模拟操作系统的设计与实现
  7. AI帮60年代老技术解决面料数字化难题,王华民团队新方法只需3分钟数据采集复刻面料真实效果...
  8. Window下kafka 单机SASL_PLAINTEXT加密及身份认证
  9. python循环结构三角形_循环结构实例(for循环三角形)
  10. Linux通用脚本---docker批量导入导出镜像