假设我有个line edit widget那么,看看是不是这样
QRect widgetRect = ui->lineEdit->geometry();QPoint mousePos = ui->lineEdit->mapFromGlobal(QCursor::pos());
if(widgetRectcontains(mousePos) )
{
//do stuff
}
1.新建Qt Gui应用,项目名称为myEvent,基类更改为QWidget,类名为Widget。
2.完成项目创建后,在设计模式向界面上拖入一个Push Button。
protected:
void mousePressEvent(QMouseEvent );
4.到widgetcpp文件中先添加头文件包含:
#include <QMouseEvent>
然后在下面添加函数的定义:
void Widget::mousePressEvent(QMouseEvent e)
{
ui->pushButton->setText(tr("(%1,%2)")arg(e->x())arg(e->y()));
}
这里的arg()里的参数分别用来填充%1和%2处的内容,arg()是QString类中的一个静态函数,使用它就可以在字符串中使用变量了。其中x()和y()分别用来返回鼠标光标所在位置的x和y坐标值。这样,当鼠标在界面上点击时,按钮就会显示出当前鼠标的坐标值。效果如下图所示。
除了鼠标按下事件,还有鼠标释放、双击、移动、滚轮等事件,其处理方式与这个例子是相似的。
二、键盘事件
1.首先在widgeth中添加protected函数声明:
void keyPressEvent(QKeyEvent );
2.然后到widgetcpp中添加头文件包含:
#include <QKeyEvent>
3.最后添加键盘按下事件处理函数的定义:
void Widget::keyPressEvent(QKeyEvent e)
{
int x = ui->pushButton->x();
int y = ui->pushButton->y();
switch (e->key())
{
case Qt::Key_W : ui->pushButton->move(x, y-10); break;
case Qt::Key_S : ui->pushButton->move(x, y+10); break;
case Qt::Key_A : ui->pushButton->move(x-10, y); break;
case Qt::Key_D : ui->pushButton->move(x+10, y); break;
}
}
这里我们先获取了按钮的位置,然后使用key()函数获取按下的按键,如果是指定的W、S、A、D等按键时则移动按钮。所有的按键都在Qt::Key枚举变量中进行了定义,大家可以在帮助文档中进行查看。
结语
两个lineEdit,判断焦点,按键无焦点,在设置linEdit有焦点setFocus才能有效;
参考实例如下:
#include "widgeth"#include "ui_widgeth"
#include <QButtonGroup>
Widget::Widget(QWidget parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QButtonGroup m_buGroup = new QButtonGroup(this);//按钮组
ui->pushButton0->setFocusPolicy(Qt::NoFocus);//设置按钮无焦点
ui->pushButton0->setIconSize(QSize(55, 50));
m_buGroup->addButton(ui->pushButton0,1);//添加按钮到QButtonGroup
ui->lineEdit->setFocus();//设置焦点
QObject::connect(m_buGroup, SIGNAL(buttonClicked(int)),this, SLOT(buttonNumslot(int)));
}
void Widget::buttonNumslot(int bn)
{
if(ui->lineEdit->hasFocus())//输入框1焦点
{
ui->lineEdit->insert(QString::number(bn));
}
else if(ui->lineEdit_2->hasFocus())//输入框2焦点
{
ui->lineEdit_2->insert(QString::number(bn));
}
设置按钮无焦点,lineEdit才可以判断焦点。
以上就是关于qt中如何取得鼠标相对插件的位置 以及如何取得插件的全局位置全部的内容,包括:qt中如何取得鼠标相对插件的位置 以及如何取得插件的全局位置、qt在重写鼠标事件时最后加上函数是为什么,、qt有两个lineedit,如何获取光标所在等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)