Jerry-BIN 2023-07-08 19:44 采纳率: 63.6%
浏览 22
已结题

关于qt键盘的问题,如何解决?

问题遇到的现象和发生背景

在qt的ui界面设置一个按键button,当按键点击一次时,可以发出和键盘按下某个键时相同的信号,并且该信号可以传递给visualboyadvance模拟器以此来控制模拟器游戏的运行,通过在qt设置按键来代替实际的键盘

操作环境、软件版本等信息

操作环境:Ubuntu16.04
软件版本:qt5.5.1 visualboyadvance-m-2.1.1

我想要达到的结果

img

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-08 22:07
    关注
    • 这篇文章讲的很详细,请看:qt 中给 按纽(button) 填充图片的方法
    • 除此之外, 这篇博客: Qt控件大致介绍以及Qt的窗口提示集合中的 1.1 按钮组(Buttons) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 按钮组包括的按钮有:

      • Push Button: 按钮

      • Tool Button: 工具按钮

      • Radio Button: 单选按钮

      • Check Box: 复选框

      • Command Link Button: 命令链接按钮

      • Dialog Button Box: 对话框按钮盒

      下面以QPushButton举例介绍一下按钮的用法。

          #include<PushButton>
          //主要代码 后续 会将源码上传的 目前还在整理
          setMinimumSize(200,120);
          setMaximumSize(200,120);
          QPushButton *quit = new QPushButton("Quit",this);
          quit->setGeometry(62,40,75,30);
          quit->setFont(QFont("Times",18,QFont::Bold));
          connect(quit,SIGNAL(clicked()),this,SLOT(close()));
      

      如图

      image.png

      点击按钮会关闭此窗口

    • 以下回答由chatgpt基于相关博客总结生成:

      根据问题内容,可以分为两个部分来解决这个问题: 1. 在Qt的UI界面中设置一个按键button来发出和键盘按下某个键时相同的信号。 2. 将该信号传递给visualboyadvance模拟器,以控制模拟器游戏的运行。

      以下是具体的解决方案:

      1. 在Qt的UI界面中设置一个按键button来发出信号。使用QPushButton来创建一个按键button,在点击该按键时会发出信号。
      // 创建一个按键button
      QPushButton *button = new QPushButton("Press Me", this);
      
      // 连接button的clicked信号和自定义槽函数
      connect(button, &QPushButton::clicked, this, &MainWindow::handleButton);
      

      上述代码中,button是一个指向QPushButton的指针,"Press Me"是按键上显示的文本。handleButton是自定义的槽函数,用于处理当按键被点击时的操作。

      1. 将发出的信号传递给visualboyadvance模拟器。这一部分的解决方案与操作系统有关,以下是在Ubuntu 16.04系统上使用VisualBoyAdvance-M 2.1.1的解决方案。

      首先,安装xdotool工具,用于模拟键盘按键事件。

      sudo apt-get install xdotool
      

      然后,在自定义的槽函数handleButton中使用xdotool来模拟键盘按键事件,发送指定的按键到visualboyadvance模拟器窗口。

      void MainWindow::handleButton()
      {
          // 使用xdotool发送键盘按键事件
          QProcess::execute("xdotool", {"search", "--onlyvisible", "--class", "VisualBoyAdvance-M", "key", "space"});
      }
      

      上述代码中,"VisualBoyAdvance-M"是visualboyadvance模拟器窗口的类名。"space"是要模拟的键盘按键,这里以空格键为例。你可以根据需要修改这些参数。

      通过以上的解决方案,你可以在Qt中设置一个按键button来控制模拟器游戏的运行。当你点击该按键时,会模拟键盘按下相应的键,并将该事件发送给visualboyadvance模拟器窗口,从而实现对模拟器游戏的控制。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月17日
  • 已采纳回答 7月9日
  • 创建了问题 7月8日

悬赏问题

  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大
  • ¥15 使用spss做psm(倾向性评分匹配)遇到问题
  • ¥20 vue+UEditor附件上传问题