• 3718阅读
  • 4回复

怎么实现label在窗体上处于选中状态 [复制链接]

上一主题 下一主题
离线atmats
 
只看楼主 倒序阅读 楼主  发表于: 2012-07-09
怎样在QWidget上选中label控件(使它显示选中状态),各位大侠帮帮忙啊?我都已经弄了几天了,通过鼠标可以实现label的全屏还原,通过“全屏”按钮也能使label全屏显示但是只能通过label还原,这个实现我已经是头晕了,希望各位大侠给点思路,上点代码,谢谢了
离线schindleren

只看该作者 1楼 发表于: 2012-07-09
不是很能明白你的意思。是指label内容的改变么?还是接受鼠标事件呢?
写鼠标事件的时候改变一下文字行么?
离线atmats
只看该作者 2楼 发表于: 2012-07-10
我有一个界面,界面上有四个label,一个“全屏”的button,通过单击可以实现label全屏显示,另外通过“全屏”按钮也可以让指定的label全屏,但是只能通过label单击退出,困扰了很久啊,总是有一点bug,在我用“全屏”按钮全屏显示,退出时需要单击两次label才能还原到全屏之前的状态,很是纠结啊,希望大侠们能帮帮忙啊
离线atmats
只看该作者 3楼 发表于: 2012-07-10
四个label的处理方法如下:
bool Demo::eventFilter(QObject *obj, QEvent *e)
{
    static bool flag = true;
    if(obj == ui->label)
    {
        if(e->type() == QEvent::MouseButtonPress)
        {
            if(flag)
            {
                index = 1;//记录第一个label被点击
                ui->label->setGeometry(0,0,500,800);
                ui->label->setFocus();
                ui->label->setStyleSheet("background-color: rgb(44, 255, 139);");
            }
            else
            {

                ui->label->setGeometry(0,0,200,200);
            }
            flag =!flag;

        }
    }
    else if(obj == ui->label2)
        {
            if(e->type() == QEvent::MouseButtonPress)
            {
                if(flag)
                {
                    index = 2;//记录第二个label被点击
                    ui->label2->setGeometry(410,20,500,800);
                    ui->label->setFocus();
                    ui->label2->setStyleSheet("background-color: rgb(44, 255, 139);");
                }
                else
                {
                    ui->label2->setGeometry(410,20,200,200);
                }
                flag =!flag;
            }
        }
    else if(obj == ui->label3)
        {
            if(e->type() == QEvent::MouseButtonPress)
            {
                if(flag)
                {
                    index = 3;//记录第三个label被点击
                    ui->label3->setGeometry(20,230,500,800);
                    ui->label3->setFocus();
                    ui->label3->setStyleSheet("background-color: rgb(44, 255, 139);");
                }
                else
                {
                    ui->label3->setGeometry(20,230,321,171);
                }
                flag =!flag;
            }
        }

    else if(obj == ui->label4)
        {
            if(e->type() == QEvent::MouseButtonPress)
            {
                if(flag)
                {
                    index = 4;//记录第三个label被点击
                    ui->label4->setGeometry(410,240,500,800);
                    ui->label4->setFocus();
                    ui->label4->setStyleSheet("background-color: rgb(44, 255, 139);");
                }
                else
                {
                    ui->label4->setGeometry(410,240,321,171);
                }
                flag =!flag;
            }
        }
    return true;
}

一个“全屏”按钮的处理如下:
void Demo::on_pushButton_pressed()  //全屏按钮
{
    if(index == 1)
    {
        ui->label->setGeometry(0,0,500,800);
    }
    else if(index == 2)
        {
          ui->label2->setGeometry(410,20,500,800);
        }

    else if(index == 3)
       {
          ui->label3->setGeometry(20,230,321,171);
       }
    else if(index == 4)
       {
          ui->label4->setGeometry(410,240,321,171);
       }
}
离线atmats
只看该作者 4楼 发表于: 2012-07-10
各位大侠帮帮忙吧,看看该怎么处理一下会比较好
快速回复
限100 字节
 
上一个 下一个