• 5662阅读
  • 3回复

该怎样用键盘来控制滚动条 [复制链接]

上一主题 下一主题
离线sipilaigou
 
只看楼主 倒序阅读 楼主  发表于: 2009-07-22
看了好多的例子,都是只能用鼠标来控制滚动条,在这里想问一下各位大大,我该如何设置,才能让键盘来控制滚动条的上下左右。
离线xtfllbl

只看该作者 1楼 发表于: 2009-07-22
代码参考,使用keyPressEvent
  1. void Plotter::keyPressEvent(QKeyEvent *event)
  2. {
  3.     switch (event->key()) {
  4.     case Qt::Key_Plus:
  5.         zoomIn();
  6.         break;
  7.     case Qt::Key_Minus:
  8.         zoomOut();
  9.         break;
  10.     case Qt::Key_Left:
  11.         zoomStack[curZoom].scroll(-1, 0);
  12.         refreshPixmap();
  13.         break;
  14.     case Qt::Key_Right:
  15.         zoomStack[curZoom].scroll(+1, 0);
  16.         refreshPixmap();
  17.         break;
  18.     case Qt::Key_Down:
  19.         zoomStack[curZoom].scroll(0, -1);
  20.         refreshPixmap();
  21.         break;
  22.     case Qt::Key_Up:
  23.         zoomStack[curZoom].scroll(0, +1);
  24.         refreshPixmap();
  25.         break;
  26.     default:
  27.         QWidget::keyPressEvent(event);
  28.     }
  29. }
[ 此帖被xtfllbl在2009-07-22 16:38重新编辑 ]
上海欢迎您
离线wd007

只看该作者 2楼 发表于: 2009-07-22
楼上的想法和我差不多,楼主,我在Qt知识库论坛里面也回复你了。

还需要重载paintEvent()、key等事件,重画一下

“我觉得可以这样,你重载QWidget的keyPressEvent()和keyReleaseEvent(),以及paintEvent()。

你需要找出要控制的滚动条的位置,然后在keyPressEvent中判断有无按键按下,是哪个按键被按下。如果是的话,微调滚动条,使他下拉或上升。在paintEvent中重画”
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线sipilaigou
只看该作者 3楼 发表于: 2009-07-24
谢谢,我回去再试试……
快速回复
限100 字节
 
上一个 下一个