• 4982阅读
  • 3回复

[提问]qt 按键 按钮 [复制链接]

上一主题 下一主题
离线wxd9199
 

只看楼主 倒序阅读 楼主  发表于: 2015-11-18
请问 我想实现 键盘 “F1” 被按下时,界面一个button响应click() 同时button有按下,与松开的效果 。
void MainWindow::keyPressEvent(QKeyEvent *ev){    switch (ev->key()) {    case Qt::Key_F1:             ui->pushButton->click();                       break;
    default:        break;    }}但是这样 没有按钮被按下 与松开的 动态效果 。请问该如何实现呢?
离线nigoole

只看该作者 1楼 发表于: 2015-11-18
void MainWindow::keyPressEvent(QKeyEvent *e)
{
    if (Qt::Key_F1 == e->key()) {
        qDebug() << "f1";
        ui->pushButton->setChecked(true);
    }
}

void MainWindow::keyReleaseEvent(QKeyEvent *e)
{
    if (Qt::Key_F1 == e->key()) {
        qDebug() << "f1";
        ui->pushButton->setChecked(false);
    }
}
有句话说得好:好好学习,天天向上。加油~~!有上船的朋友联系企鹅393320854
离线z55716368

只看该作者 2楼 发表于: 2015-11-19
2楼的应该是OK的
每一个问题 都是一次进步
离线donglaile

只看该作者 3楼 发表于: 2015-11-19
这样就是鼠标按下和释放的效果
  1. void MainWindow::keyPressEvent(QKeyEvent * e)
  2. {
  3.     switch (e->key()) {
  4.     case Qt::Key_F1:
  5.         QMouseEvent *mEvnPress;
  6.         mEvnPress = new QMouseEvent(QEvent::MouseButtonPress,
  7.                                     ui->btn->rect().center(),
  8.                                     Qt::LeftButton,Qt::LeftButton,
  9.                                     Qt::NoModifier);
  10.         QApplication::sendEvent(QWidget::focusWidget(),mEvnPress);
  11.         break;
  12.     default:
  13.         break;
  14.     }
  15. }
  16. void MainWindow::keyReleaseEvent(QKeyEvent * e)
  17. {
  18.     switch (e->key()) {
  19.     case Qt::Key_F1:
  20.         QMouseEvent *mEvnRelease;
  21.         mEvnRelease = new QMouseEvent(QEvent::MouseButtonRelease,
  22.                                       ui->btn->rect().center(),
  23.                                       Qt::LeftButton,Qt::LeftButton,
  24.                                       Qt::NoModifier);
  25.         QApplication::sendEvent(QWidget::focusWidget(),mEvnRelease);
  26.         break;
  27.     default:
  28.         break;
  29.     }
  30. }


快速回复
限100 字节
 
上一个 下一个