• 二、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
  • 相关阅读:
    OSG绘制几何图形
    OSGMFC
    OSG第一个Demo
    线性四叉树十进制Morton码计算示例
    单源最短路径——Dijkstra算法学习
    .Net内存优化的几点经验
    强制回收和IDisposable.Dispose方法
    七参数计算正确性验证——Coord软件使用
    [转载]windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解
    T4自动生成数据库C#实体类学习(1)
  • 原文地址:https://www.cnblogs.com/wuyaxiansheng/p/14544276.html
Copyright © 2020-2023  润新知