Qt-数据显示管理系统-1基础开发

简介: 看到了刘大师的作品,自己一直也想做一个,奈何懒得要死呀。最近有点动力了,就赶紧写点。这里不能向留大师那样有条理的写出来,只能是说个大致的方向,想到哪里写哪里。

今日看点:

1. 建立工程

2. 采用纯代码写

3. 尝试使用SVG格式资源文件

4. 关联鼠标右键以及菜单

5. 获取屏幕分辨率

6. 给我们的程序加上图标

7. 全屏显示

8. 菜单建立

9. 菜单美化

 

建立工程,这里就不详细介绍了,image.pngimage.pngimage.pngimage.pngimage.png

点击完成就可以了,到这里,已经走到了今日看点2了。下面我们就是开始真的开始写代码了,好紧张啊,不知道能不能实现了呀啊呀呀啊呀呀。

首先了,自己准备一个ico文件,作为我们程序的图标

先看看pro文件,因为后面我们会用到网络和SVG的内容,所以我们在PRO文件中加入了相应模块

QT       += core gui network svg

这样我们就可以放心的使用网路和SVG的相关功能了。

这里顺便把第六个看点也写了,给我们的程序加上图标

在pro文件中加入以下代码(注意,这里需要较高的版本支持)

RC_ICONS = ./Images/MainWindow/LOGO/LOGO.ico

下面来解决第三个看点,使用SVG资源,SVG资源自己准备,可以用AI直接将图片转换为SVG格式。


关于QT如何使用SVG的详细说明,可以看这里或者自己百度下下,这里只列出了适合我用的


https://jingyan.baidu.com/article/e9fb46e1402b4a7520f76659.html


需要包含四个文件

#include <QSvgRenderer>
#include <QPaintEvent>
#include <QString>
#include <QPainter>

目前我用到的功能仅仅是绘制主窗口的背景,所以,这里需要重载一个函数

/*
     * Jianwang.Zhang 190527
     * 窗口重绘事件,目前主要为绘制主窗口背景
     * 探索新的方式,采用.svg格式的图片
     */
    void paintEvent(QPaintEvent *event);

加载和使用SVG的代码就是这个绘制函数中

/*
 * Jianwang.Zhang 190527
 * 窗口重绘事件,目前主要为绘制主窗口背景
 * 探索新的方式,采用.svg格式的图片
 */
void MainWindow::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event)
    QSvgRenderer * mainWindow_BackGround = new QSvgRenderer(this);
    QString file_MainWindosBackGround = ":/MainWindos/Images/MainWindow/MainBack.svg";
    mainWindow_BackGround->load(file_MainWindosBackGround);
    QPainter painter(this);
    mainWindow_BackGround->render(&painter);
}

image.png

connect(this,&MainWindow::customContextMenuRequested,this,&MainWindow::slot_MouseRight_Clicked);        //关联鼠标右键槽函数

具体实现内容就是让我们自己定义的菜单显示

/*
 * Jianwei.Zhang 190527
 * 鼠标右键点击事件
 */
void MainWindow::slot_MouseRight_Clicked(QPoint pos)
{
    Q_UNUSED(pos)
    mainWindowMenu->exec(QCursor::pos());
}

这里有涉及到一个内容,就是怎么做一个菜单呢,看这里

image.png

//添加鼠标事件
    m_Flag_ShowFullScreen == true ? mainWindowMenu->addAction(QIcon(":/MainWindos/Images/MainWindow/MenuIcon/NewWindow.ico"),QString("正常显示"),this,[=](){this->showNormal();this->resize(1366,768);m_Flag_ShowFullScreen = !m_Flag_ShowFullScreen;}) :
                                    mainWindowMenu->addAction(QIcon(":/MainWindos/Images/MainWindow/MenuIcon/NewWindow.ico"),QString("全屏显示"),this,[=](){this->showFullScreen();m_Flag_ShowFullScreen = !m_Flag_ShowFullScreen;});
    mainWindowMenu->addSeparator();     //添加分隔符
    mainWindowMenu->addAction(QIcon(":/MainWindos/Images/MainWindow/MenuIcon/NewWindow.ico"),QString("新建模块"),this,[=](){qDebug() << "调用新建窗口函数";});
    mainWindowMenu->addSeparator();     //添加分隔符
    mainWindowMenu->addAction(QIcon(":/MainWindos/Images/MainWindow/MenuIcon/Exit.ico"),QString("退出"),this,[=](){this->close();});

给他加上点东西,这里全屏显示和正常显示还有问题的,在后面会修正,现在只是先给菜单加点东西。

加了菜单,就涉及到了给这个菜单的美化,看这里

"QMenu{background:rgb(200, 200, 200,50);}"
                "QMenu::item{background-color: transparent;color:#FFFFFF;/*margin:0px 8px;padding:8px 32px;*/}"
                "QMenu::item::selected{background-color:#88888888;}"

美化有三部分,菜单的背景,菜单的每个item和item选中的样子

下一个,全屏显示问题

/*
     * Jianwei.Zhang 190527
     * 全屏显示
     * 这里主要是判断一下屏幕分辨率,如果分辨率太小这提示用户会印象显示效果
     */
    void show_FullScreen(bool isFullScreen);

声明一个全屏显示函数并实现了它

/*
 * Jianwei.Zhang 190527
 * 全屏显示
 * 这里主要是判断一下屏幕分辨率,如果分辨率太小这提示用户会印象显示效果
 */
void MainWindow::show_FullScreen(bool isFullScreen)
{
    get_ScreenInfoe(m_ScreenWidth,m_ScreenHeight);
    isFullScreen == true ?(m_ScreenWidth>= 1366 && m_ScreenHeight>= 768) ? this->showFullScreen(): this->resize(1366,768) : this->resize(1366,768);
}

这里有涉及到一个获取屏幕分辨率的问题了

看这里

/*
     * Jianwei.Zhang 190527
     * 获取当前屏幕分辨率
     */
    void get_ScreenInfoe(int &screenWidth,int  &screenHeight);

image.png

/*
 * Jianwei.Zhang 190527
 * 获取当前屏幕分辨率
 */
void MainWindow::get_ScreenInfoe(int &screenWidth, int &screenHeight)
{
    QDesktopWidget *desktopWidget = QApplication::desktop();
    QRect screenRect = desktopWidget->screenGeometry();
    screenWidth = screenRect.width();
    screenHeight = screenRect.height();
}

image.png

好了,以上就是今日看点了,下面微信加好友聊天,支付宝加好友偷能量


目录
相关文章
|
4月前
|
存储 Windows
(13) Qt事件系统(two)
文章详细介绍了Qt事件系统,包括事件分发、自定义事件、事件传播机制、事件过滤以及事件与信号的区别。
163 3
(13) Qt事件系统(two)
|
4月前
|
编解码 程序员
(12)Qt事件系统(one)
本文详细介绍了Qt事件系统,包括各种系统事件、鼠标事件、键盘事件、定时器等的处理方法和示例代码。
136 0
|
5月前
Qt开发
Qt开发
|
5月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
120 0
|
6月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
258 2
|
6月前
|
API
Qt绘图之Paint系统
Qt绘图之Paint系统
81 2
Qt开发网络嗅探器02
Qt开发网络嗅探器02
|
6月前
|
网络协议 容器
Qt开发网络嗅探器03
Qt开发网络嗅探器03
|
6月前
从源码角度分析Qt元对象系统2
从源码角度分析Qt元对象系统
74 0
|
6月前
|
存储
从源码角度分析Qt元对象系统1
从源码角度分析Qt元对象系统
105 0