c/c++语言开发共享C/C++ Qt StatusBar底部状态栏应用教程

qt窗体中默认会附加一个qstatusbar组件,状态栏组件位于主窗体的最下方,其作用是提供一个工具提示功能,当程序中有提示信息是可以动态的显示在这个区域内,状态栏组件内可以增加任何qt中的通用组件,

qt窗体中默认会附加一个qstatusbar组件,状态栏组件位于主窗体的最下方,其作用是提供一个工具提示功能,当程序中有提示信息是可以动态的显示在这个区域内,状态栏组件内可以增加任何qt中的通用组件,只需要通过addwidget函数动态追加即可引入到底部,底部状态栏在实际开发中应用非常普遍,以下代码是对该组件基本使用方法的总结。

首先我们通过new新增3个qlabel组件,并将该组件依次排列在底部状态栏内,实现代码如下所示:

  #include "mainwindow.h"  #include "ui_mainwindow.h"  #include <qlabel>    mainwindow::mainwindow(qwidget *parent) : qmainwindow(parent), ui(new ui::mainwindow)  {      ui->setupui(this);        // 初始化状态栏      qlabel *labcellindex = new qlabel("当前坐标: 0.0",this);      labcellindex->setminimumwidth(250);        qlabel *labcelltype=new qlabel("单元格类型: null",this);      labcelltype->setminimumwidth(200);        qlabel *labstudid=new qlabel("学生id: 0",this);      labstudid->setminimumwidth(200);        // 将初始化的标签添加到底部状态栏上      ui->statusbar->addwidget(labcellindex);      ui->statusbar->addwidget(labcelltype);      ui->statusbar->addwidget(labstudid);  }    mainwindow::~mainwindow()  {      delete ui;  }

运行代码效果如下:

C/C++ Qt StatusBar底部状态栏应用教程

qlabel组件除了可以增加提示信息以外,通过设置setopenexternallinks可以将这个组件设置为以链接形式出现,有利于我们增加网页跳转等功能。

  #include "mainwindow.h"  #include "ui_mainwindow.h"  #include &lt;qlabel&gt;    mainwindow::mainwindow(qwidget *parent) : qmainwindow(parent), ui(new ui::mainwindow)  {      ui-&gt;setupui(this);        // 隐藏状态栏下方三角形      ui-&gt;statusbar-&gt;setsizegripenabled(false);        // 新增标签栏      qlabel *label_url = new qlabel(this);      qlabel *label_about = new qlabel(this);        // 配置连接      label_url-&gt;setframestyle(qframe::box | qframe::sunken);      label_url-&gt;settext(tr("&lt;a href="https://lyshark.cnblogs.com"&gt;访问主页&lt;/a&gt;"));      label_url-&gt;setopenexternallinks(true);        label_about-&gt;setframestyle(qframe::box | qframe::sunken);      label_about-&gt;settext(tr("&lt;a href="https://lyshark.cnblogs.com"&gt;关于我&lt;/a&gt;"));      label_about-&gt;setopenexternallinks(true);        // 将信息增加到底部(永久添加)      ui-&gt;statusbar-&gt;addpermanentwidget(label_url);      ui-&gt;statusbar-&gt;addpermanentwidget(label_about);  }    mainwindow::~mainwindow()  {      delete ui;  }

运行代码效果如下:

C/C++ Qt StatusBar底部状态栏应用教程

同理,只要是通用组件都可以被安置到底部菜单栏,如果我们需要增加进度条组件只需要这样写:

  #include "mainwindow.h"  #include "ui_mainwindow.h"  #include <qlabel>  #include <qprogressbar>    qprogressbar *pro;    mainwindow::mainwindow(qwidget *parent) : qmainwindow(parent), ui(new ui::mainwindow)  {      ui->setupui(this);        pro = new qprogressbar(this);        // 自动计算      ui->statusbar->addpermanentwidget(pro, 1);        // 设置进度是否显示      pro->settextvisible(true);        // 设置初始化进度位置      pro->setvalue(0);  }    mainwindow::~mainwindow()  {      delete ui;  }    void mainwindow::on_pushbutton_clicked()  {      qint32 count = pro->value();      count = count +10;      pro->setvalue(count);  }

运行代码效果如下:

C/C++ Qt StatusBar底部状态栏应用教程

接着我们增加一个tablewidget并初始化参数,tablewidget组件存在一个on_tablewidget_currentcellchanged属性,该属性的作用是,只要table表格存在变化则会触发,当用户选择不同的表格,我们可以将当前表格行列自动设置到状态栏中,从而实现同步状态栏消息提示,起到时刻动态显示的作用。

  #include "mainwindow.h"  #include "ui_mainwindow.h"  #include <qlabel>  #include <qtablewidget>  #include <qtablewidgetitem>    qlabel *labcellindex;    mainwindow::mainwindow(qwidget *parent) : qmainwindow(parent), ui(new ui::mainwindow)  {      ui->setupui(this);    // ------------------------------------------------------------------------------------  // 初始化状态栏      labcellindex = new qlabel("当前坐标: 0.0",this);      labcellindex->setminimumwidth(250);        // 将初始化的标签添加到底部状态栏上      ui->statusbar->addwidget(labcellindex);    // ------------------------------------------------------------------------------------  // 填充数据,对表格进行初始化操作      qstringlist header;      header << "姓名" << "性别" << "年龄";        ui->tablewidget->setcolumncount(header.size());                        // 设置表格的列数      ui->tablewidget->sethorizontalheaderlabels(header);                    // 设置水平头      ui->tablewidget->setrowcount(5);                                       // 设置总行数      ui->tablewidget->setedittriggers(qabstractitemview::noedittriggers);   // 设置表结构默认不可编辑        // 填充数据      qstringlist namelist;      namelist << "lyshark a" << "lyshark b" << "lyshark c";        qstringlist sexlist;      sexlist << "男" << "男" << "女";        qint32 agelist[3] = {22,23,43};        // 针对获取元素使用 namelist[x] 和使用 namelist.at(x)效果相同      for(int x=0;x< 3;x++)      {          int col =0;          // 添加姓名          ui->tablewidget->setitem(x,col++,new qtablewidgetitem(namelist[x]));          // 添加性别          ui->tablewidget->setitem(x,col++,new qtablewidgetitem(sexlist.at(x)));          // 添加年龄          ui->tablewidget->setitem(x,col++,new qtablewidgetitem( qstring::number(agelist[x]) ) );      }  }    // 当前选择单元格发生变化时触发响应事件,也就是将底部状态栏标签设置  // https://www.cnblogs.com/lyshark  void mainwindow::on_tablewidget_currentcellchanged(int currentrow, int currentcolumn, int previousrow, int previouscolumn)  {      q_unused(previousrow);      q_unused(previouscolumn);        // 显示行与列的变化数值      //std::cout << "currentrow = " << currentrow << " currentcolumn = " << currentcolumn << std::endl;      //std::cout << "pre row = " << previousrow << " pre column = " << previouscolumn << std::endl;        // 获取当前单元格的item      qtablewidgetitem *item = ui->tablewidget->item(currentrow,currentcolumn);      if(item == null)      return;        // 设置单元格坐标      labcellindex->settext(qstring::asprintf("当前坐标: %d 行 | %d 列",currentrow,currentcolumn));  }    mainwindow::~mainwindow()  {      delete ui;  }

运行代码效果如下:

C/C++ Qt StatusBar底部状态栏应用教程

到此这篇关于c/c++ qt statusbar底部状态栏应用教程的文章就介绍到这了,更多相关c++ qt statusbar底部状态栏内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多c/c++开发分享C/C++ Qt StatusBar底部状态栏应用教程,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/966317.html

(0)
上一篇 2021年12月4日
下一篇 2021年12月4日

精彩推荐