Go-Qt5开发之简单拖放(32)

Go-Qt5开发之简单拖放

拖拽简介

在这部分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()
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值