Qt下怎么判断判断一个鼠标的光标是否从一个QPushButton上移开。

Qt下怎么判断判断一个鼠标的光标是否从一个QPushButton上移开。,第1张

你能把问题说仔细一点吗?谢谢。 追问: 我弄错了,是一个QLineEdit。当鼠标点击QLineEdit时,输入一串字符。当光标移出QLineEdit后判断,如果QLineEdit中的字符串的最后一个字符是“”那么就QLineEdit控件内容中自动加上字符"0" 回答: 那你重新提问,把问题提问在QLineEdit范围里,你提问在QQ堂这没人回答的。采纳下下我,谢谢了。

在业务开始时,线程自动向每个按钮发送clicked()信号,按钮接收到该信号后,执行该信号,从而模拟人单击按钮,但整个过程按钮不能接收键盘鼠标事件,防止人干扰线程自动模拟按钮的执行。首先想到的是调用按钮的setEnable(false)函数,这样确实可以使按钮不接收键盘鼠标消息了为实现鼠标移上按钮时,光(鼠)标样式发生变化,需要重载public bool eventFilter方法还有另一种设置图标和文字的方法网上还、还、有另一种设置按钮图标的办法QT下执行程序的图标设置还没有一种跨平台的解决方案,这里介绍的时windows平台下的方法。

首先当然要准备一个ico图标文件(假定为exeico),将其复制到工程目录当中(pro文件所在的目录)。

然后在QT Creator中Ctrl+N或 File - New File or Project,选择General中的Text File,名称填写为rc文件(如exeIconrc),在里面只用写一行: 这里arg()里的参数分别用来填充%1和%2处的内容。其中x()和y()分别用来返回鼠标光标所在位置的x和y坐标值。这样,当鼠标在界面上点击时,按钮就会显示出当前鼠标的坐标值。除了鼠标按下事件,还有鼠标释放、双击、移动、滚轮等事件,其处理方式与这个例子是相似的。

按照我的理解,假设有一个编辑控件,一个button,你点击button后,会在编辑控件中显示字符,如果是的话,那就如下

先假设你点击button会输出12345

class ourbutton : public QPushButton

{

Q_OBJECT

public:

ourbutton(QWidget parent = 0) : QPushButton(parent)

{

connect(this, SIGNAL(clicked()),

this, SLOT(getText()));

}

signals:

void sendText(const QString &text);

private slots:

void getText() { emit sendText(tr("12345")) }

};

QLineEdit edit = new QLineEdit();

ourbutton button = new ourbutton();

connect(button, SIGNAL(sendText(const QString &text)),

);

这个用函数的话比较麻烦,但是我实现过了,QLineEdit有2个函数,第一设置光标位置,第二读取当前光标位置。你要在每次 *** 作前都要读取当前光标位置,然后再进行+1 或者-1,零界点你自己考虑,大概的思路是这样的

#include "widgeth"

#include "ui_widgeth"

#include <QDebug>

Widget::Widget(QWidget parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

}

Widget::~Widget()

{

delete ui;

}

void Widget::on_pushButton_clicked()//+

{

int i = ui->lineEdit->cursorPosition();

qDebug() << i;

ui->lineEdit->setCursorPosition(++i);

ui->pushButton->setFocusPolicy(Qt::NoFocus);

ui->pushButton_2->setFocusPolicy(Qt::NoFocus);

ui->lineEdit->setFocus();

}

void Widget::on_pushButton_2_clicked()//-

{

int i = ui->lineEdit->cursorPosition();

qDebug() << i;

ui->lineEdit->setCursorPosition(--i);

ui->pushButton->setFocusPolicy(Qt::NoFocus);

ui->pushButton_2->setFocusPolicy(Qt::NoFocus);

ui->lineEdit->setFocus();

}

刚给你试了下可以的,还要就是注意焦点,让QLineEdit一直获得焦点,代码都给你了,分多点吧

Qt自带的mouseMoveEvent ( QMouseEvent e )函数,可以获得到当前的坐标位置,你可以把矩形的原点设置为对话框的原点,矩形大小是已知的,这就可以验证出鼠标是否在矩形内,最后在mouseMoveEvent ( QMouseEvent e )中,把鼠标设置可用,这样就可以了

你可以在MouseEvent或是HoverEvent中实现

自己设定一个边界矩形,或是区域也行(QRect/QRegion)

判定当前鼠标的位置是否在该矩形内即可,用contains( const QPoint& )

当在边界的时候就设置鼠标cursor的坐标不变即可

以上就是关于Qt下怎么判断判断一个鼠标的光标是否从一个QPushButton上移开。全部的内容,包括:Qt下怎么判断判断一个鼠标的光标是否从一个QPushButton上移开。、qt按钮不关联光标、如何让qt实现在光标出输出字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9458378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存