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
  • 相关阅读:
    获取jsonPath的节点名称
    如何删除 macOS High Sierra 上的 swapfile
    Prototype fake it till make it.观后感
    intellij idea 初步环境熟悉
    一个比较综合的项目--》>图片缓存,下拉刷新等
    写的很好的博客->有关性能优化、图片缓存等
    layout优化之-》viewStub,requestFocus,merge,include
    有关ActionBar
    android:installLocation 解析
    Android开发效率—Eclipse快捷键
  • 原文地址:https://www.cnblogs.com/wuyaxiansheng/p/14544276.html
Copyright © 2011-2022 走看看