QT桌面项目(状态栏和导航栏设置)

这篇具有很好参考价值的文章主要介绍了QT桌面项目(状态栏和导航栏设置)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

为了和我们这个项目做的更加真实,这里为我们的项目添加上状态栏和导航栏让他变成更加接近手机的桌面效果。

一、状态栏

这个状态栏就是显示时间和wifi状态,电池电量的,这里把颜色都设置为白色因为设置为白色后就不会受到壁纸更换的影响了。
QT桌面项目(状态栏和导航栏设置)
那么如何来编写这个状态栏呢?这里先建一个MyStatusBar的类:
他继承QWidegt。

这个状态栏的编写方法也是非常简单的,只需要在这个QWidegt中使用QHBoxLayout布局管理器进行布局即可,使用addStretch函数在中间添加一个可伸缩的空间,让显示时间和wifi状态进行左右分隔。

MyStatusBar.cpp

#include "MyStatusBar.h"
#include <QHBoxLayout>
#include <QDateTime>
#include <QPixmap>

MyStatusBar::MyStatusBar(QWidget *parent)
    : QWidget{parent}, m_time(this), m_Electricity(this), m_Signal(this)
{
    QHBoxLayout* Hlayout = new QHBoxLayout(this);

    QDateTime currentTime = QDateTime::currentDateTime();
    m_time.setStyleSheet("color : white ;");
    m_time.setText(currentTime.toString("hh:mm"));

    QPixmap pix;
    pix = QPixmap(":/signal.png").scaled(30, 30);
    m_Signal.setPixmap(pix);
    pix = QPixmap(":/Power.png").scaled(30, 30);
    m_Electricity.setPixmap(pix);

    Hlayout->addWidget(&m_time);
    Hlayout->addStretch(); // 添加一个可伸缩的空间
    Hlayout->addWidget(&m_Signal);
    Hlayout->addWidget(&m_Electricity);
    Hlayout->setContentsMargins(5, 0, 5, 0);

    m_timer.start(30000);
    connect(&m_timer, SIGNAL(timeout()), this, SLOT(Timeout()));

}

void MyStatusBar::Timeout()
{
    QDateTime currentTime = QDateTime::currentDateTime();
    m_time.setText(currentTime.toString("hh:mm"));
}

MyStatusBar.h

#ifndef MYSTATUSBAR_H
#define MYSTATUSBAR_H

#include <QWidget>
#include <QLabel>
#include <QTimer>

class MyStatusBar : public QWidget
{
    Q_OBJECT

    QLabel m_time;
    QLabel m_Electricity;
    QLabel m_Signal;
    QTimer m_timer;

public:
    explicit MyStatusBar(QWidget *parent = nullptr);

signals:

protected slots:
    void Timeout();

};

#endif // MYSTATUSBAR_H

使用方法:
使用垂直布局管理器将这个状态栏添加进入主界面即可。

 MyStatusBar* mystatusbar = new MyStatusBar();

 QVBoxLayout* Vlayout = new QVBoxLayout(this);
 
 Vlayout->addWidget(mystatusbar);
 Vlayout->addStretch();
 Vlayout->setSpacing(0);
 Vlayout->setContentsMargins(0, 0, 0, 0);

二、导航栏

QT桌面项目(状态栏和导航栏设置)

导航栏就是像手机下面的三个小点,指示现在是在第几个界面。这几个小点使用QPushbutton来设置即可。同样的也将他设置为白色防止壁纸对他的干扰。

和上面的状态栏一样,我们这里也新建一个NavigationBar类:

NavigationBar.h

在NavigationBar这个类中提供三个按键(你的主界面有几个就提供几个按键)

再提供两个按键修改函数ButtonNormalStyle和ButtonSelectStyle函数,分别设置不同状态下的按键。

当显示到对应的界面时按键的样式变为长方形圆角样式,当没有显示到对应界面时按键变为圆形样式。

    QPushButton button1;
    QPushButton button2;
    QPushButton button3;

    void ButtonNormalStyle(QPushButton& button);
    void ButtonSelectStyle(QPushButton& button);

NavigationBar.cpp
使用水平布局管理器将这三个按键管理起来,并且在头部和尾部使用addStretch函数让这三个按键排布在中间位置。

QHBoxLayout* Hlayout = new QHBoxLayout();

Hlayout->addStretch();
Hlayout->addWidget(&button1);
Hlayout->addWidget(&button2);
Hlayout->addWidget(&button3);
Hlayout->addStretch();

void Widget::ButtonNormalStyle(QPushButton& button)
{
    button.setFixedSize(10, 10);
    button.setStyleSheet("QPushButton {\
                          border: none;\
                          border-radius: 5px;\
                          background-color: rgba(255, 255, 255, 0.5);\
                          color: white;\
                          text-align: center;\
                      }"
                    );
}

void Widget::ButtonSelectStyle(QPushButton& button)
{
    button.setFixedSize(15, 10);
    button.setStyleSheet("QPushButton {\
                          border: none;\
                          border-radius: 5px;\
                          background-color: white;\
                          color: white;\
                          text-align: center;\
                      }"
                    );
}


三、同时添加状态栏和导航栏

同时将状态栏和导航栏添加进桌面也是很简单的,只需要使用QVBoxLayout垂直布局管理器进行管理即可,将主界面显示在中间位置即可完成效果。

总结

当我们完成这一步后我们的桌面就有模有样了哈哈哈。希望大家可以继续跟着我学习,一起做出一个完整的桌面项目。文章来源地址https://www.toymoban.com/news/detail-460323.html

到了这里,关于QT桌面项目(状态栏和导航栏设置)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在uniapp中获取微信小程序状态栏和导航栏的高度

    在微信小程序中,可以使用  uni.getSystemInfo()  方法获取设备的系统信息,包括状态栏的高度和顶部导航栏的高度。您可以使用这些信息计算顶部图标距离。 下面是一个示例代码,展示如何在 UniApp 中获取顶部图标距离: 在上述示例代码中,我们通过调用  uni.getSystemInfo()  方

    2024年02月07日
    浏览(47)
  • Android全屏弹出Dialog显示状态栏和导航栏的问题及解决方案

    在移动端开发中,有时候我们需要在Android应用中弹出一个全屏的Dialog。然而,当我们尝试实现这样的Dialog时,可能会遇到一个问题:状态栏和导航栏在全屏Dialog中仍然可见,这可能会影响用户体验。本文将介绍如何解决这个问题,并提供相应的源代码。 问题描述: 当我们使

    2024年02月05日
    浏览(41)
  • 【UniApp开发小程序】顶部导航栏和底部导航栏设置+iconfont图标引入

    在正式开发小程序的功能之前,首先需要确定小程序的主要框架。 我的小程序需要创建的页面是“首页”、“我想要”、“私信”、“我的”,“首页”已经存在于项目中,不需要重复创建。创建过程如下: 创建成功,不仅创建了 star.vue , Hbuilder 还自动帮助创建了 star 文件

    2024年02月16日
    浏览(53)
  • flutter设置windows是否显示标题栏和状态栏和全屏显示

    想要让桌面软件实现全屏和不显示状态栏或者自定义状态栏,就可以使用window_manager这个依赖库,使用起来还是非常方便的,可以自定义显示窗口大小和位置,还有设置标题栏是否展示等内容,也可以设置可拖动区域。官方仓库地址:window_manager | Flutter Package github仓库地址:

    2024年01月23日
    浏览(46)
  • Android WindowInsetsController 设置状态栏、导航栏

    有 hide() ,也有 show() 在更早的版本中,使用 ViewCompat.getWindowInsetsController() 获取 WindowInsetsControllerCompat 实例 而现在推荐使用 WindowCompat.etInsetsController() 获取 WindowInsetsControllerCompat 实例 底部的三个按键就是导航栏 (navigation bar): back / home / recent 。 高版本系统,recent,可能没有图

    2024年02月15日
    浏览(43)
  • 微信小程序-获取设备信息,状态栏/导航栏/内容/tabBar高度设置

    效果展示  代码展示

    2024年02月11日
    浏览(63)
  • 删除左导航栏和我的电脑旁边wps云盘图标

    win+R打开命令行输入regedit打开注册表,找到如下位置删除文件。 1.资源管理-左导航栏:(中间数字可能有区别,看好开头结尾即可) HKEY_USERSS-1-5-21-1514480548-2261916930-1024021491001SoftwareMicrosoftWindowsCurrentVersionExplorerDesktopNameSpace{7AE6DE87-C956-4B40-9C89-3D166C9841D3} 2.资源管理=我的电

    2024年02月13日
    浏览(41)
  • 【vue3】固定上导航栏和左侧导航栏,只显示其他内容在主内容区域

    在一个单独的vue组件文件中只写出上导航栏和左侧导航栏的内容 将你想要展示的页面主内容写到单独的组件中 在index.js写路由,将【想要展示的页面主内容的路由】作为【子路由】写在【只写出上导航栏和左侧导航栏的路由】的下面; 在elment-plus官网上找到自己需要的布局容

    2024年02月12日
    浏览(45)
  • Android开发:利用Android Studio自带的底部导航栏和ViewPager+TabLayout创建顶部导航栏

    目录 效果图 底部导航栏 ​编辑 顶部导航栏 底部导航栏首个Fragment代码 适配器代码 顶部导航栏首个Fragment代码  顶部导航栏另外三个Fragment代码  ​编辑 顶部导航栏四个Fragment的XML 补充 学Android开发开始实操,第一步肯定要把大致布局搞定。做这个布局用到的知识难点有fr

    2024年02月03日
    浏览(60)
  • uniapp全屏弹窗,覆盖原生控件导航栏和tabbar,全局调用

    在uniapp中popup弹窗及对话框的遮罩层是覆盖不了原生的导航栏和tab栏的,在tabbar页中使用弹出框会非常的违和,接下来告诉大家实现的思路。 创建一个页面放置components或者pages中,接着在pages.json中注册当前页面,并设置背景色透明及取消导航栏。 配置创建页面的背景色透明

    2024年02月10日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包