electron-vue跨平台桌面应用开发实战教程(四)——窗口样式&打开新窗口

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/David1025/article/details/104422837

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

前三篇文章传送门

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

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

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

我们基于上一篇文章的代码(上一篇文章的git地址:https://gitee.com/hedavid/electron-vue-demos)接着写。先看下上一篇文章实现的样式:
登录页
主页
接下来我们就要开始今天的讲解了

1.去掉外边框

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

  1. win = new BrowserWindow({
  2. width: 400,
  3. height: 550,
  4. frame: false,
  5. webPreferences: {
  6. nodeIntegration: true
  7. }
  8. })

这样窗口就会变成这样:
加上frame: false之后
但是现在又有一个新问题,应用没有关闭按钮,没有最小化按钮,也不能拖拽移动位置了,接下来我们为他创建一个工具条。

2.增加操作栏

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

  1. const { ipcRenderer } = require('electron')
  2. // 点击最小化按钮调用的方法
  3. minimize () {
  4. ipcRenderer.send('minimize')
  5. },
  6. // 点击关闭按钮调用的方法
  7. close () {
  8. ipcRenderer.send('close')
  9. },

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

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

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

  1. ipcMain.on('close', e =>
  2. win.close()
  3. )
  4. ipcMain.on('minimize', e =>
  5. win.minimize()
  6. )

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

4. 打开新窗口

4.1 新建Calendar.vue
  1. <template>
  2. <div>
  3. <el-calendar v-model="value"></el-calendar>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: 'Calendar',
  9. data () {
  10. return {
  11. value: new Date()
  12. }
  13. }
  14. }
  15. </script>
4.2 修改router
  1. {
  2. path: '/Calendar',
  3. name: 'Calendar',
  4. component: Calendar
  5. },
4.3 修改background.js
  1. const winURL = process.env.NODE_ENV === 'development'
  2. ? 'http://localhost:8080'
  3. : `file://${__dirname}/index.html`

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

  1. win.loadURL(winURL)

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

  1. // 定义calendar窗体
  2. let calendarWin
  3. // 创建calendar窗口方法
  4. function openCalendarWindow () {
  5. calendarWin = new BrowserWindow({
  6. width: 400,
  7. height: 550,
  8. parent: win, // win是主窗口
  9. webPreferences: {
  10. nodeIntegration: true
  11. }
  12. })
  13. calendarWin.loadURL(winURL + '#/Calendar')
  14. calendarWin.on('closed', () => { calendarWin = null })
  15. }
  16. ipcMain.on('openCalendarWindow', e =>
  17. openCalendarWindow()
  18. )

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

4.4 在Home.vue页面中调用创建新窗口的方法
  1. openCalendarWindow () {
  2. ipcRenderer.send('openCalendarWindow')
  3. }

接下来我们看下效果
中间的日历就是新打开的窗口
以上就是今天的全部内容,下一篇我们讲一下怎么发系统通知,最小化到托盘,剪贴板

更多内容请关注公众号
在这里插入图片描述