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

今日看点:

1. 建立工程

2. 采用纯代码写

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

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

5. 获取屏幕分辨率

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

7. 全屏显示

8. 菜单建立

9. 菜单美化

 

建立工程,这里就不详细介绍了,Qt-数据显示管理系统-1基础开发Qt-数据显示管理系统-1基础开发Qt-数据显示管理系统-1基础开发Qt-数据显示管理系统-1基础开发Qt-数据显示管理系统-1基础开发

点击完成就可以了,到这里,已经走到了今日看点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);
}

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

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());
}

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

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

//添加鼠标事件
    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);

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

/*
 * 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();
}

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

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


上一篇:企业官网怎么选择合适的阿里云服务器ECS(个人见解)


下一篇:马斯克:实现自动驾驶后提价或停售汽车;麒麟810实体芯片亮相;斗鱼纽交所IPO | 雷锋早报