• 5164阅读
  • 4回复

QGraphicsScene QGraphicsProxyWidge 窗口件焦点切换问题 [复制链接]

上一主题 下一主题
离线hends2012
 

只看楼主 倒序阅读 楼主  发表于: 2011-10-13

在使用QGraphicsScene 架构显示窗口按钮,按钮左右移动时显示按钮对应的窗口,使用代理窗口QGraphicsProxyWidge 将写好的QWidge添加到
Scene 中要实现左右键切换显示的窗口内容,按确认键进入相应的窗口,使窗口获取焦点,但是现在使用代理这种方式,窗口的焦点无法获取,只能左右切换显示的窗口,求解
附效果图:
离线jdwx

只看该作者 1楼 发表于: 2011-10-13
界面设计的不错,就是有点暗!
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线roywillow

只看该作者 2楼 发表于: 2011-10-13
我也大概只能说
界面设计的挺华丽……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线hends2012

只看该作者 3楼 发表于: 2011-10-14
还是出了点问题。。。。
离线hends2012

只看该作者 4楼 发表于: 2011-10-14
按键事件:
void ParallaxHome::keyPressEvent(QKeyEvent *event)
{
    if (event->key() == Qt::Key_Right)
    {
        m_naviBar->setPageOffset(+1);
        printf("the right offset is %d\n",offset);
        m_scene.addItem(Proxy_items[offset]);
        Proxy_items[offset]->setPos(330,100);
        Proxy_items[offset]->setZValue(2);
        Proxy_items[offset-1]->close();
        ++offset;
    }
    else if (event->key() == Qt::Key_Left)
    {
        m_naviBar->setPageOffset(-1);
        m_scene.addItem(Proxy_items[offset]);
        Proxy_items[offset]->setPos(330,100);
        Proxy_items[offset]->setZValue(2);
        Proxy_items[offset+1]->close();
        --offset;
    }
    else if((event->key() == Qt::Key_Space)
    {
            Proxy_items[offset]->setFocus();
        }
}


构造函数:
ParallaxHome::ParallaxHome():QGraphicsView(),m_pageOffset(0)
{
    setRenderHint(QPainter::Antialiasing, true);
    setBackgroundBrush(QPixmap(":/images/bottom.png"));
    setupScene();
    setScene(&m_scene);
    mytimeid=startTimer(1000);
    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉滑动条
    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    setFrameShape(QFrame::NoFrame);
    setWindowTitle("Parallax Home");
    num=0;
    offset=1;
}


void ParallaxHome::setupScene()
{
        for (int i=0;i<8;i++)
        {
                proxy = new QGraphicsProxyWidget;
                Proxy_items<<proxy;
        }
        m_naviBar = new NaviBar;
        m_scene.addItem(m_naviBar);
        m_naviBar->setZValue(2);


        m_d_tv = new d_tv;
        Proxy_items[0]->setWidget(m_d_tv);
        m_scene.addItem(Proxy_items[0]);
        Proxy_items[0]->setPos(330,100);
        Proxy_items[0]->setZValue(2);


        m_epg = new epg;
        Proxy_items[1]->setWidget(m_epg);

        m_set = new set;
        Proxy_items[2]->setWidget(m_set);

        m_set = new set;
        Proxy_items[3]->setWidget(m_set);

        m_user = new user;
        Proxy_items[4]->setWidget(m_user);

        m_cast = new cast;
        Proxy_items[5]->setWidget(m_cast);

        m_game = new game;
        Proxy_items[6]->setWidget(m_game);

        m_demand = new demand;
        Proxy_items[7]->setWidget(m_demand);


        m_scene.setItemIndexMethod(QGraphicsScene::NoIndex);
}

另外:我是新手,呵呵
快速回复
限100 字节
 
上一个 下一个