QT键盘事件_获取CTRL-SHIFT-回车键ctrl+M组合键
#ifndef MAINWINDOW6_4_H
#define MAINWINDOW6_4_H
#include
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow6_4; }
QT_END_NAMESPACE
class MainWindow6_4 : public QWidget
{
Q_OBJECT
public:
MainWindow6_4(QWidget *parent = nullptr);
~MainWindow6_4();
private:
Ui::MainWindow6_4 *ui;
bool b_keyUp;//向上键按下的标志
bool b_keyLeft;//向左按下的标志6_4
bool b_move;//是否完成一次移动
protected:
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);
};
#endif // MAINWINDOW6_4_H
#include "mainwindow6_4.h"
#include "ui_mainwindow6_4.h"
#include
#include
#include
#include
MainWindow6_4::MainWindow6_4(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MainWindow6_4)
{
ui->setupUi(this);
setFocus();//是主界面获得焦点
b_keyUp = false;
b_keyLeft = false;
b_move = false;
}
MainWindow6_4::~MainWindow6_4()
{
delete ui;
}
void MainWindow6_4::keyPressEvent(QKeyEvent *event)
{
if(event->key()==Qt::Key_Return)
{
QMessageBox::information(this,"tips",tr("press您按了回车键哦"));
}
if(event->modifiers()==Qt::ShiftModifier)
{
QMessageBox::information(this,"tips",tr("press您按了shift键哦"));
}
if(event->modifiers()==Qt::ControlModifier)//是否按下ctrl键
{
if(event->key()==Qt::Key_M)//是否按下了M键。by txwtech,src6_4
{
setWindowState(Qt::WindowMaximized);//设置窗口最大化
}
// else
// {
// QWidget::keyPressEvent(event);
// }
if(event->key()==Qt::Key_N)//是否按下了n键。by txwtech,src6_4
{
setWindowState(Qt::WindowNoState);//设置窗口还原
}
}
// if(event->key()==Qt::Key_Up)//向上方向键,构造函数要设置:setFocus();//是主界面获得焦点,否则不会执行
// {
// qDebug()key()==Qt::Key_Up)//向上方向键
{
qDebug()isAutoRepeat())
{
return;
}
b_keyLeft= false;
if(b_move)
{
b_move=false;
return;
}
if(b_keyUp)
{
ui->pushButton->move(10,80);//竖线左边位置
b_move=true;
}
else
{
ui->pushButton->move(10,120);//竖线边位置
}
}
else if(event->key()==Qt::Key_Down)
{
ui->pushButton->move(120,120);//使用向下方向键来还原按钮的位置
}
else if(event->modifiers()==Qt::Key_Return)
{
QMessageBox::information(this,"tips",tr("release您按了回车键哦"));
}
}