我是靠谱客的博主 微笑秋天,最近开发中收集的这篇文章主要介绍Go-Qt5开发之简单拖放(32),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Go-Qt5开发之简单拖放

    • 拖拽简介
    • 案例说明
    • demo.go

拖拽简介

在这部分Qt5教程中,我们将讨论拖拽相关操作。

在计算机图形用户界面中,拖放的操作(或支持的作用)点击虚拟对象和拖动到另一个位置或到另一个虚拟对象。一般来说,它可以用于调用多种行动,或创建各种类型的两个抽象对象之间的关联。

拖放是图形用户界面的一部分。拖拽操作让用户直观地做复杂的事情。

通常,我们可以拖放两件事:数据或一些图形对象。
如果我们把一个图像从一个应用程序到另一个地方,我们拖拽二进制数据。
如果我们把一个标签在Firefox中并将其移动到另一个地方,我们拖拽一个图形组件。

案例说明

  • 在之前示例中,我们有一个QLineEdit QPushButton。

  • 我们拖着纯文本的行编辑窗口小部件,然后放到按钮部件。按钮的标签会改变。

  • 这个列子演示了一个简单的拖拽操作

demo.go

package main

import (
	"github.com/therecipe/qt/core"
	"github.com/therecipe/qt/gui"
	"github.com/therecipe/qt/widgets"
	"os"
)

/*
在之前示例中,我们有一个QLineEdit QPushButton。
我们拖着纯文本的行编辑窗口小部件,然后放到按钮部件。按钮的标签会改变。

这个列子演示了一个简单的拖拽操作
*/

func InitUi() *widgets.QMainWindow {
	// 创建窗口
	app := widgets.NewQMainWindow(nil, 0)

	// 设置窗口的标题
	app.SetWindowTitle("Qt 教程")

	// 设置窗口的位置和大小
	app.SetGeometry2(300, 300, 300, 220)

	// 设置窗口的图标,引用当前目录下的web.png图片
	app.SetWindowIcon(gui.NewQIcon5("images/app.ico"))

	// 布局窗口组件载体
	widget := widgets.NewQWidget(app, core.Qt__Widget)
	//widget.SetGeometry(core.NewQRect4(300, 300, 300, 220))
	widget.SetGeometry2(0, 0, 300, 220)
	app.SetCentralWidget(widget)


	//QLineEdit内置了对drag(拖动)操作的支持。
	edit := widgets.NewQLineEdit(widget)
	// 打开拖放
	edit.SetDragEnabled(true)
	edit.Move2(30, 65)

	// 我们需要重新实现某些方法才能使QPushButton接受拖放操作。
	button := widgets.NewQPushButton2("Button", widget)
	button.Move2(190, 65)
	//	使该控件接受drop(放下)事件。
	button.SetAcceptDrops(true)
	button.ConnectDragEnterEvent(dragEnterEvent)
	// 通过重新实现dropEvent()方法,我们定义了在drop事件发生时的行为。
	//这里我们改变了按钮的文字。
	button.ConnectDropEvent(func(event *gui.QDropEvent) {
		button.SetText(event.MimeData().Text())
	})
	return app
}



// 首先我们重新实现了dragEnterEvent()方法,并设置可接受的数据类型(在这里是普通文本)。
func dragEnterEvent(event *gui.QDragEnterEvent) {
	if event.MimeData().HasFormat("text/plain"){
		event.AcceptProposedAction()
	}
}



func main() {
	// 创建一个应用程序对象
	// sys.argv参数是一个列表,从命令行输入参数
	widgets.NewQApplication(len(os.Args), os.Args)

	// 初始化窗口
	app := InitUi()

	// 显示组件
	app.Show()

	// 确保应用程序干净的退出
	widgets.QApplication_Exec()
}

最后

以上就是微笑秋天为你收集整理的Go-Qt5开发之简单拖放(32)的全部内容,希望文章能够帮你解决Go-Qt5开发之简单拖放(32)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部