0
点赞
收藏
分享

微信扫一扫

AI绘画Stable Diffusion【艺术写真】:冰雪奇缘,使用ReActor插件实现AI写真

eelq 2024-05-11 阅读 8

本博文源于生产实际,主要解决LineEdit不可粘贴输入的情况。下面将进行具体分析

问题来源

输入框只能一个个输入,不可复制粘贴。

分析

给QLineEdit装一个监听事件,监听它的事件即可。

问题解决步骤

问题一共分为三步:

  1. 书写监听事件
  2. 设置linEdit属性
  3. 验证获得结论

1、书写监听事件

监听事件吗,先定义后实现。定义:

bool eventFilter(QObject *obj, QEvent *event);

然后定义它

bool CSingleDeviceInfo::eventFilter(QObject * obj, QEvent * event)
{
	QLineEdit *pLineEdit = qobject_cast<QLineEdit *>(obj);
	
	if (pLineEdit != NULL && pLineEdit == ui->IpAddressLE)
	{
		if (event->type() == QEvent::MouseButtonDblClick) {//防止全选 ctrl+ a
			return true;
		}
		else if (event->type() == QEvent::MouseButtonPress) {
			QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
			if (mouseEvent && mouseEvent->button() == Qt::RightButton) //屏蔽右键
				return true;
		}else if(event->type() ==  QEvent::KeyPress) {  //键盘事件
			QKeyEvent *pKeyEvent = static_cast<QKeyEvent*>(event);
			if (pKeyEvent->matches(QKeySequence::SelectAll)|| pKeyEvent->matches(QKeySequence::Copy)
				|| pKeyEvent->matches(QKeySequence::Paste))
				return true;
		}
	}
	return QFrame::eventFilter(obj,event);
}

因为笔者继承的QFrame所以,这里return QFrame

return QFrame::eventFilter(obj,event);

如果继承QObject,那么就只需要把QFrame改成QObject就行了,其余不变。如果这段代码编译不过,这些头文件加上

#include<QKeyEvent>
#include<QEvent>

2、设置lineEdit属性

在这里插入图片描述
设置这个属性,这样可以直接让其不能右键粘贴,这个也要考虑到

3、验证获得结论

结论就是

  1. ctrl +v不能粘贴进去
  2. 右键 不能弹出上下文菜单
  3. ctrl + a也不能选中
举报

相关推荐

0 条评论