chenxiao_huan 2015-08-06 13:04 采纳率: 100%
浏览 2876
已采纳

自己用Qt画了一个方块,想要控制方块移动,paintevent和keypressevent已经写好

void Widget::paintEvent(QPaintEvent*event)
{QPainterpainter(this);
painter.setPen(QPen(Qt::black,8));
painter.drawRect(50,50,50,50);}

void Widget::keyPressEvent(QKeyEvent*event){
switch(event->key())
{caseQt::Key_S:
move(pos().x(),ui->pushButton->pos().y()-50);break;
caseQt::Key_W:
move(pos().x(),ui->pushButton->pos().y()+50);break;
default:QWidget::keyPressEvent(event);}}

  • 写回答

1条回答 默认 最新

  • wafstudio 2015-08-06 14:24
    关注
     int xx = 0;
    int yy = 0;
    
    void QtTest::paintEvent(QPaintEvent*event)
    {
        QPainter painter(this);
        painter.setPen(QPen(Qt::black,1));
        painter.drawRect(50+xx,50+yy,50,50);
    }
    
    void QtTest::keyPressEvent(QKeyEvent*event)
    {
        switch(event->key())
        {
            case Qt::Key_A:
                xx--;break;
            case Qt::Key_D:
                xx++;break;
            case Qt::Key_W:
                yy--;break;
            case Qt::Key_S:
                yy++;break; 
        }
    
        repaint ();
    
        QWidget::keyPressEvent(event);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。