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
  • 相关阅读:
    Sublime Text 3专题
    00.PHP学习建议
    php面试题及答案收藏(转)
    (转)如何快速掌握一门技术
    最全的MySQL基础【燕十八传世】
    UEditor编辑器并不难
    学习一门语言难在什么地方?
    PHP中关于位运算符 与 或 异或 取反
    WebP是什么图片格式?你了解PNG、JPG、WebP和GIF的区别吗?
    Mysql 外键设置
  • 原文地址:https://www.cnblogs.com/wuyaxiansheng/p/14544276.html
Copyright © 2011-2022 走看看