如何让父窗体响应光标记,而子窗体不响应

加盾男爵 2017-09-28 01:44:31
一个继承自QDialog的类,里面包含了诺干个QPushButton,按键盘上光标键的上线,然后会有个虚线框在各个QPushButton中上下移动,然后我是了下在对话框的按键事件中有

void keyPressEvent(QKeyEvent* event)
{
if(event->key() == Qt::Key_Up || event->key() == Qt::Key_Down)
qDebug()<<"This Is Parent.";
QDialog::keyPressEvent(event);
}

结果程序没有任何反应,然后我子类化了QPushButton,也重写了按键事件函数
void keyPressEvent(QKeyEvent* event)
{
if(event->key() == Qt::Key_Up || event->key() == Qt::Key_Down)
qDebug()<<"This Is Child";
QPushButton::keyPressEvent(event);
}

结果按光标上线的时候就输出
This Is Child
This Is Child
This Is Child
This Is Child

我想问下,对于一个包含了诺干个子控件(这里是QPushButton)对话框,如何让对话框(也就是父窗体)接收到光标上下键而不让子窗体接收到光标上键的按下
...全文
704 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以在QPushButton的派生类keyPressEvent函数用event->setAccept(false); 也可以使用QPushButton::setFocusPolicy(Qt::NoFocus);
jader_li 2017-09-30
  • 打赏
  • 举报
回复
可以在QPushButton的派生类keyPressEvent函数用event->setAccept(false); 也可以使用QPushButton::setFocusPolicy(Qt::NoFocus); 的
加盾男爵 2017-09-30
  • 打赏
  • 举报
回复
引用 2 楼 cuzn1024 的回复:
可以在QPushButton的派生类keyPressEvent函数用event->setAccept(false); 也可以使用QPushButton::setFocusPolicy(Qt::NoFocus);
1 event->setAccept(false)这个因为我的程序里按钮还需要响应其他从父窗体过来的按键事件,所以没法这样一刀切 2QPushButton::setFocusPolicy(Qt::NoFocus)这个试过了,加了以后整个对话框都不响应光标上下键,也就是说光标上下,不会有个虚框在每个按钮上下移动了,上面的测试代码既不输出This Is Parent,也不输出This Is Child
DC_Sea 2017-09-29
  • 打赏
  • 举报
回复
事件过滤可以 也有其他办法············

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧