vue 拖动 datatransfer 问题_electron-vue跨平台桌面应用开发实战教程(四)——窗口样式amp;打开新窗口...

6f6d5c74edd078f841a5ad3176e0f957.png

> 本文我们讲解下怎么修改窗口样式,系统默认的窗口非常普通,通常与设计不符,所以我们要自定义,接下来我们讲解下怎么去掉原有样式,怎么实现实现窗口的最小化,最大化和关闭按钮。还有怎么打开一个新页面

前三篇文章传送门

electron-vue跨平台桌面应用开发实战教程(一)——Hello World

electron-vue跨平台桌面应用开发实战教程(二)——主进程常用配置

electron-vue跨平台桌面应用开发实战教程(三)——动态修改窗口大小

我们基于上一篇文章的代码(上一篇文章的git地址:https://gitee.com/hedavid/electron-vue-demos)接着写。先看下上一篇文章实现的样式:

4d28762a1c5f5fc99c4df3f4b3c00253.png

fc4818d5dfe5705f9113e9cccb2d66c7.png

接下来我们就要开始今天的讲解了

1.去掉外边框

我们修改background.js,修改createWindow方法,创建BrowserWindow时增加
frame: false

win = new BrowserWindow({width: 400,height: 550,frame: false,webPreferences: {nodeIntegration: true}})

这样窗口就会变成这样:

5fe9350ea7a0c99cc8b6e716e7e7f819.png

但是现在又有一个新问题,应用没有关闭按钮,没有最小化按钮,也不能拖拽移动位置了,接下来我们为他创建一个工具条。

2.增加操作栏

(注意:在此处还涉及到其他页面的样式调整,在这里就不列举了,查看git上的代码即可) 我们修改Login.vue,增加以下代码(只展示关键代码,部分样式和html请查看git上的代码):

const { ipcRenderer } = require('electron')
// 点击最小化按钮调用的方法
minimize () {ipcRenderer.send('minimize')
},
// 点击关闭按钮调用的方法
close () {ipcRenderer.send('close')
},

窗口的拖动需要增加以下样式:

-webkit-app-region: drag; // 可拖动
-webkit-app-region: no-drag; // 不可拖动

3.主线程中增加对应的最小化和关闭窗口的方法

ipcMain.on('close', e =>win.close()
)ipcMain.on('minimize', e =>win.minimize()
)

接下来我们改造一下主页面,来实现打开新窗口的功能

4. 打开新窗口

4.1 新建Calendar.vue

<template><div><el-calendar v-model="value"></el-calendar></div>
</template><script>
export default {name: 'Calendar',data () {return {value: new Date()}}
}
</script>

4.2 修改router

{path: '/Calendar',name: 'Calendar',component: Calendar
},

4.3 修改background.js

const winURL = process.env.NODE_ENV === 'development'? 'http://localhost:8080': `file://${__dirname}/index.html`

上边这段代码主要是用来解决vue路由访问页面的问题,端口号是vue启动的默认端口号,如果有需要可以自行修改

win.loadURL(winURL)

上边这段代码主要是修改主窗口加载的url,修改我我们上边声明的那个

// 定义calendar窗体
let calendarWin
// 创建calendar窗口方法
function openCalendarWindow () {calendarWin = new BrowserWindow({width: 400,height: 550,parent: win, // win是主窗口webPreferences: {nodeIntegration: true}})calendarWin.loadURL(winURL + '#/Calendar')calendarWin.on('closed', () => { calendarWin = null })
}
ipcMain.on('openCalendarWindow', e =>openCalendarWindow()
)

上边这段代码是打开新窗口的代码,calendarWin.loadURL(winURL + '#/Calendar') 是指向我们上边创建的页面。

4.4 在Home.vue页面中调用创建新窗口的方法

openCalendarWindow () {ipcRenderer.send('openCalendarWindow')
}

接下来我们看下效果

24ebe1d685e481fc71b710e297e4cf24.png

以上就是今天的全部内容,下一篇我们讲一下怎么发系统通知,最小化到托盘,剪贴板

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

string 包含_一文搞懂String常见面试题,从基础到实战,到原理分析和源码解析...

01 string基础1.1 Java String 类字符串广泛应用 在 Java 编程中&#xff0c;在 Java 中字符串属于对象&#xff0c;Java 提供了 String 类来创建和操作字符串。1.2 创建字符串创建字符串最简单的方式如下:String greeting "菜鸟教程";在代码中遇到字符串常量时&…

RPN网络在图像处理中的应用

RPN&#xff08;Region Proposal Network&#xff0c;区域建议网络&#xff09;是深度学习中用于目标检测的关键组件之一&#xff0c;它通常与后续的目标检测网络&#xff08;如Fast R-CNN、Faster R-CNN等&#xff09;结合使用。RPN的主要作用是生成候选目标区域&#xff0c;从…

Java创建一个学生类

创建一个表示学生的实体类 Student&#xff0c;其中有学生姓名、性别和年龄信息。要求使用属性来表示学生信息&#xff0c;最终编写测试代码。 首先定义一个名为 Student 的类&#xff0c;代码如下&#xff1a; public class Student {// 学生类 }在类中通过属性定义学生、性…

pythonwhile爬虫教程_Python 爬虫从入门到进阶之路(十一)

之前的文章我们介绍了一下 Xpath 模块&#xff0c;接下来我们就利用 Xpath 模块爬取《糗事百科》的糗事。之前我们已经利用 re 模块爬取过一次糗百&#xff0c;我们只需要在其基础上做一些修改就可以了&#xff0c;为了保证项目的完整性&#xff0c;我们重新再来一遍。我们通过…

python中fd是什么意思_python里fd是什么意思

文件描述字(file descriptor&#xff0c;fd)是系统中用来唯一记录当前已经打开的文件的标识号&#xff0c;fd是一个整数。除了file对象外&#xff0c;Python还提供对fd的操作&#xff0c;对fd的操作更加底层&#xff0c;fd和Python中的file对象是不同的概念。在介绍file对象时已…

show index mysql_MySQL SHOW INDEX语法的实际应用

以下的文章主要描述的是MySQL SHOW INDEX语法的实际操作用法以及其实际查看索引状态(语法)的具体内容的描述&#xff0c;如果你对这一技术&#xff0c;心存好奇的话&#xff0c;以下的文章将会揭开它的神秘面纱。SHOW INDEX FROM tbl_name [FROM db_name]MySQL SHOW INDEX会返回…

阿联酋esma认证怎么做_百度爱采购企业认证是怎么做的?这些你要知道!

入驻百度爱采购的企业可以获得认证标识&#xff0c;这个标识是企业品牌树立的重要表现&#xff0c;在产品展示页面和百度首页搜索企业名称都有企业信息的醒目展示&#xff0c;并且可以直接跳转到企业店铺&#xff0c;为企业带来流量的同时&#xff0c;还能进行品牌的宣传。百度…

Java this关键字详解

this 关键字是 Java 常用的关键字&#xff0c;可用于任何实例方法内指向当前对象&#xff0c;也可指向对其调用当前方法的对象&#xff0c;或者在需要当前类型对象引用时使用。 this.属性名 大部分时候&#xff0c;普通方法访问其他方法、成员变量时无须使用 this 前缀&#…

zabbixdocker里的mysql_基于Docker安装与部署Zabbix

今天测试了一天的Zabbix-Docker&#xff0c;部署起来确实方便&#xff0c;就需要在安装了Docker的linux系统中输入以下命令就可以了。1.安装MysqL数据库,启动一个空的MysqL服务器实例docker run Cname zabbix-DB -t \-e MysqL_DATABASE”zabbix” \-e MysqL_USER”zabbix” \-e…

Java创建对象详解

对象是对类的实例化。对象具有状态和行为&#xff0c;变量用来表明对象的状态&#xff0c;方法表明对象所具有的行为。Java 对象的生命周期包括创建、使用和清除, Java 语言中创建对象分显式创建与隐含创建两种情况。 显式创建对象 对象的显式创建方式有 4 种。 1. 使用 new …

python matplotlib模块教程_Python中的Matplotlib模块入门教程

1 关于 Matplotlib 模块Matplotlib 是一个由 John Hunter 等开发的&#xff0c;用以绘制二维图形的 Python 模块。它利用了 Python 下的数值计算模块 Numeric 及 Numarray&#xff0c;克隆了许多 Matlab 中的函数&#xff0c; 用以帮助用户轻松地获得高质量的二维图形。Matplot…

人脸离线识别模块_人脸消费机离线刷脸如何实现?

随着越来越多刷卡刷脸一卡通的设备出现。大家在享受一卡通的便利的同时。也在考虑人脸消费机的基本功能和安全属性&#xff0c;人脸消费机&#xff0c;是指人脸在消费访客管理方面的相关。在人脸刷脸进行消费的时候是一下几个阶段1.人脸特征提取首先得先让人脸消费机看到你的脸…

Java匿名对象

创建对象的格式如下&#xff1a; 类名称 对象名 new 类名称();每次 new 都相当于开辟了一个新的对象&#xff0c;并开辟了一个新的物理内存空间。如果一个对象只需要使用唯一的一次&#xff0c;就可以使用匿名对象&#xff0c;匿名对象还可以作为实际参数传递。 匿名对象就是…

mysql中的钱null_MySQL数据库中null的知识点总结

在mysql数据库中&#xff0c;null是一个经常出现的情况&#xff0c;关于mysql中的null&#xff0c;有哪些注意事项呢&#xff1f;下面简单总结归纳下&#xff0c;后续会不断补充。1. is null首先判断数据库中某一列的值是否为null&#xff0c;不能用等于来判断&#xff0c;必须…

Java访问对象的属性和行为

每个对象都有自己的属性和行为&#xff0c;这些属性和行为在类中体现为成员变量和成员方法&#xff0c;其中成员变量对应对象的属性&#xff0c;成员方法对应对象的行为。 在 Java 中&#xff0c;要引用对象的属性和行为&#xff0c;需要使用点&#xff08;.&#xff09;操作符…

junit版本_Junit-jupiter-api 和 junit-jupiter-engine 的区别是什么

我们都知道 JUnit 是用于进行单元测试的。但是 Junit 5 和 Junit 4 的区别比较大。 很多时候你可能会遇到 Junit 引擎配置错误导致测试无法进行。junit-jupiter-api JUnit 5 Jupiter API 的测试&#xff0c;你需要使用这个 API 来写测试和进行扩展。junit-jupiter-engine JUnit…

Java对象的销毁

对象使用完之后需要对其进行清除。对象的清除是指释放对象占用的内存。在创建对象时&#xff0c;用户必须使用 new 操作符为对象分配内存。不过&#xff0c;在清除对象时&#xff0c;由系统自动进行内存回收&#xff0c;不需要用户额外处理。 Java 语言的内存自动回收称为垃圾…

mysql数据库基础简介_MySql数据库基础之数据库简介及安装

MySql数据库简介&#xff1a;众所周知&#xff0c;MySql数据库是一款开源的关系型数据库&#xff0c;在Web应用方面&#xff0c;MySql是最好的、最流行的RDBMS(Relational Database Management System,关系型数据库管理系统)应用软件。MySql的4大特点&#xff1a;1.MySql是开源…

Java用户修改密码

每一个应用系统都离不开用户模块。用户模块除了提供登录之外&#xff0c;还允许用户查看自己的信息和进行修改。本实例将创建一个用户类&#xff0c;然后再创建一个测试类调用用户类&#xff0c;实现修改密码的功能。 本实例的用户类非常简单&#xff0c;仅包含用户名和密码两…