gpt4 book ai didi

qt - 使用 Qt 时将键盘输入定向到小部件

转载 作者:行者123 更新时间:2023-12-02 04:00:04 24 4
gpt4 key购买 nike

我正在使用 Qt 创建一个 GUI。基本上它是一个交互式 map ,显示机器人在竞技场中实时移动,并允许用户通过使用鼠标和键盘键与机器人交互(告诉他们去/停止)。我使用 opengl 创建 map 本身,一切正常,我可以看到机器人在 map 上移动,我可以按键盘上的不同键并发送实际的机器人命令。

现在,我需要把这张 map 变成一个更大的 GUI 的一部分,这个 GUI 也将这张 map 与其他对象一起保存,并不是所有的对象都必须使用 opengl。因此,通过使用 Qt 创建器(设计器),我在我的 GUI 中有一些拖放选项卡,并且我还在我的 GUI 中添加了一个“dockwidget”。码头小部件包含我之前创建的交互式 map 。但是,现在我无法再使用键盘向我的 map 发送命令。我仍然可以在我的 map 上点击不同的机器人,我可以看到它们被选中并改变颜色(正如我编码它所做的那样),但按键没有相应的 Action (因为它已经被编码)。

这就是 map 本身的样子。 http://dl.dropbox.com/u/46437808/collision3.png

这是作为停靠小部件的 map 。 (在小工具里面,我可以点击一个机器人,让它变成黄色)https://www.dropbox.com/s/lpo43rl6z4268im/argHRI.png

所以,我的问题是我们如何在使用 Qt 时将键盘输入定向到窗口中的特定小部件。从我读到的内容来看,这可能与设置焦点政策有关。因此,我尝试在构造函数中将我的dockwidget 的focuspolicy 设置为“StrongFocus”(以便它可以接受键盘输入),但这并没有帮助。

这是我将 map 设置为停靠小部件的代码,并且我也在尝试设置焦点。

    #include "ui_arghri.h"

argHRI::argHRI(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::argHRI)
{
ui->setupUi(this);
ui->dockMap->activateWindow();
//ui->dockMap->keyboardGrabber();
//ui->dockMap->grabKeyboard();
ui->dockMap->setFocus();
ui->dockMap->setFocusPolicy(Qt::StrongFocus);
}

argHRI::~argHRI()
{
delete ui;
}

void argHRI::addMap(Map * map)
{

qDebug()<<"argHRI::in AddMap test is "<<map->test;

//ui->dockMap->show();
ui->dockMap->setWidget(map);


}

最佳答案

将处理 KeyPress 事件的事件过滤器添加到您的类。这里有例子:http://doc.qt.io/archives/qt-4.7/eventsandfilters.html
只是不要忘记添加:

installEventFilter(this);

给构造函数,否则它将无法工作。

关于qt - 使用 Qt 时将键盘输入定向到小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10924079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com