zoukankan      html  css  js  c++  java
  • 二、golang-qt 无边框窗口

      第二篇不知道写点啥,自己想用golang-qt重构一下自己写的项目,就把其中遇到的问题 都写下来吧,首先遇到的问题就是设置无边框的窗口,但是qt 设置无边框窗口之后就不能支持拖动之类的事件了,需要自己去实现一下,下面的代码就是我对设置无边框窗口的拖动的实现

    mian函数:

    package main
    
    import (
        "os"
    
        "omc/ui/mainwindow"
    
        "github.com/therecipe/qt/widgets"
    )
    
    func main() {
        widgets.NewQApplication(len(os.Args), os.Args)
    
        login := mainwindow.Newloginwindow(nil)
        login.Show()
    
        widgets.QApplication_Exec()
    }

    无边框窗口(真的是啥都没有)

    package mainwindow
    
    import (
        "github.com/therecipe/qt/core"
        "github.com/therecipe/qt/gui"
        "github.com/therecipe/qt/widgets"
    )
    
    type __loginwindow struct{}
    
    func (*__loginwindow) Init() {}
    
    type loginwindow struct {
        *__loginwindow
        *widgets.QWidget
    }
    
    var mouse_press bool
    
    var mouse_point core.QPoint
    
    func Newloginwindow(p widgets.QWidget_ITF) *loginwindow {
        var par *widgets.QWidget
    
        if p != nil {
            par = p.QWidget_PTR()
        }
    
        w := &loginwindow{QWidget: widgets.NewQWidget(par, 0)}
    
        w.Init()
        w.setupUI()
        return w
    }
    
    func (w *loginwindow) setupUI() {
        if w.ObjectName() == "" {
            w.SetObjectName("loginwindow")
        }
        w.Resize2(663, 450)
        w.retranslateUi()
    }
    
    func (w *loginwindow) retranslateUi() {
    
        //设置界面
        w.SetWindowTitle("用户登录")
        w.SetWindowFlags(core.Qt__FramelessWindowHint)
    
        //链接信号对应的槽函数
        w.ConnectMouseMoveEvent(w.mouseMove)
        w.ConnectMousePressEvent(w.mousePress)
        w.ConnectMouseReleaseEvent(w.mouseRelease)
    }
    
    func (w *loginwindow) mouseMove(event *gui.QMouseEvent) {
        if mouse_press {
            w.Move2(event.GlobalX()-mouse_point.X(), event.GlobalY()-mouse_point.Y())
        }
    }
    
    func (w *loginwindow) mousePress(event *gui.QMouseEvent) {
        if event.Button() == core.Qt__LeftButton {
            mouse_press = true
            //mouse_point = event.GlobalPos() - loginwindow.Pos()
            mouse_point = *core.NewQPoint2(event.GlobalX()-w.X(), event.GlobalY()-w.Y())
        } else if event.Button() == core.Qt__RightButton {
            w.Close()
        }
    }
    
    func (w *loginwindow) mouseRelease(event *gui.QMouseEvent) {
        mouse_press = false
    }

    使用qt的设计器 在goqt这 实在是用的难受,手撸的代码

    不想平凡,奈何太懒 T_T
  • 相关阅读:
    本地计算机 上的 Redis Server 服务启动后停止
    RabbitMQ 命令行
    mysql ORDER BY 中文出现错误问题
    使用javascript纯前端导出excel
    软件测试概念学习
    excel控件只为简单写入数据表--github找到ExcelUtil笔记
    快速创建Spring web项目
    PQGrid商业化的表格组件
    mybatis传入参数为0被误认为是空字符串的解决方法
    MyBatis like报错
  • 原文地址:https://www.cnblogs.com/wuyaxiansheng/p/14544276.html
Copyright © 2011-2022 走看看