用qpushbutton切换控制label

时间:2022-02-02 23:14:05
有两个按钮控制一个label,当触法按钮一时,label显示第一张图片,而触法按钮二的时候,label显示第二种图片,我是新手,我用clicked()点击,都是显示第一张图片啊,如何使他们图片切换,还希望各位能好好指教下,有详细代码更好了,谢谢,

12 个解决方案

#1


能否展示下, 你所谓的“...都是显示第一张图片的代码...”; 看看错哪了?!

#2


void Dialog::on_tB1_clicked()
{
    pm.load(QString(":/image/background.bmp"));
    ui->lbphoto->setPixmap(pm.scaled(91,91,Qt::KeepAspectRatio));
}


void Dialog::on_tB2_clicked()
{

    pm.load(QString(":/image/video.bmp"));
    ui->lbphoto->setPixmap(pm.scaled(91,91,Qt::KeepAspectRatio));

}

#3


引用 2 楼 chenchizhao 的回复:
void Dialog::on_tB1_clicked()
{
    pm.load(QString(":/image/background.bmp"));
    ui->lbphoto->setPixmap(pm.scaled(91,91,Qt::KeepAspectRatio));
}


void Dialog::on_tB2_clicked()
{

    pm……


代码没问题,你先确认读取图片是否顺利~```
判断一下 bool bOK = pm.load(.....);

#4


我把第一个张屏蔽了,可以显示第二张图片,可还是无法切换,你说的那个bool bOK = pm.load(.....);是在每个_clicked()中判断真假吗

#5


错了。无法读取第二种图片啊,是不是label只能显示一张图片啊,不能加载第二种图片啊,要换其他部件

#6


引用 5 楼 chenchizhao 的回复:
错了。无法读取第二种图片啊,是不是label只能显示一张图片啊,不能加载第二种图片啊,要换其他部件


无法读取第二种图片, 这种情况一般是你的路径有问题, 要么就是当前图片不存在~```
另外, QLabel的setPixmap方法每次调用都会清除先前的内容,然后设置成当前指定的pixmap; 所以常规下只能显示一个pixmap~```

#7


请问下,你注意这种问题啊,我在加载的图片后面添加一个数字,他就无法显示出来比如":/image/background.bmp,我在background.bmp加个数字,也就是background1.bmp,当然我源文件也这样修改,可就无法显示出来,可除掉数字的话都是显示啊,我换了几张图片都是这样情况,不知道你遇到过没有啊

#8


是不是pixmap显示的图片有专门的加载图片字母限定啊,

#9


引用 7 楼 chenchizhao 的回复:
请问下,你注意这种问题啊,我在加载的图片后面添加一个数字,他就无法显示出来比如":/image/background.bmp,我在background.bmp加个数字,也就是background1.bmp,当然我源文件也这样修改,可就无法显示出来,可除掉数字的话都是显示啊,我换了几张图片都是这样情况,不知道你遇到过没有啊


这和文件名无关, 前提还是你得确认图片正常加载~```你的代码写得没问题, 所以你可以跟踪下load运行是否正确即可~`` :)

#10


谢谢了,问题已经解决了,这加载的图片都必须先添加grc资源中,才能正常显示啊,我以前在Linux的QT designer中不需要这样添加到grc资源文件中,只需要放到工程文件就行了,,而QT qt creator则需要加载到grc资源中,

#11


引用 10 楼 chenchizhao 的回复:
谢谢了,问题已经解决了,这加载的图片都必须先添加grc资源中,才能正常显示啊,我以前在Linux的QT designer中不需要这样添加到grc资源文件中,只需要放到工程文件就行了,,而QT qt creator则需要加载到grc资源中,

因为你所采用的路径是相对路径~`` 如果采用绝对路径,或设置搜索路径,也可以不用加载到资源文件中~``

#12


加入到资源文件qrc试试

#1


能否展示下, 你所谓的“...都是显示第一张图片的代码...”; 看看错哪了?!

#2


void Dialog::on_tB1_clicked()
{
    pm.load(QString(":/image/background.bmp"));
    ui->lbphoto->setPixmap(pm.scaled(91,91,Qt::KeepAspectRatio));
}


void Dialog::on_tB2_clicked()
{

    pm.load(QString(":/image/video.bmp"));
    ui->lbphoto->setPixmap(pm.scaled(91,91,Qt::KeepAspectRatio));

}

#3


引用 2 楼 chenchizhao 的回复:
void Dialog::on_tB1_clicked()
{
    pm.load(QString(":/image/background.bmp"));
    ui->lbphoto->setPixmap(pm.scaled(91,91,Qt::KeepAspectRatio));
}


void Dialog::on_tB2_clicked()
{

    pm……


代码没问题,你先确认读取图片是否顺利~```
判断一下 bool bOK = pm.load(.....);

#4


我把第一个张屏蔽了,可以显示第二张图片,可还是无法切换,你说的那个bool bOK = pm.load(.....);是在每个_clicked()中判断真假吗

#5


错了。无法读取第二种图片啊,是不是label只能显示一张图片啊,不能加载第二种图片啊,要换其他部件

#6


引用 5 楼 chenchizhao 的回复:
错了。无法读取第二种图片啊,是不是label只能显示一张图片啊,不能加载第二种图片啊,要换其他部件


无法读取第二种图片, 这种情况一般是你的路径有问题, 要么就是当前图片不存在~```
另外, QLabel的setPixmap方法每次调用都会清除先前的内容,然后设置成当前指定的pixmap; 所以常规下只能显示一个pixmap~```

#7


请问下,你注意这种问题啊,我在加载的图片后面添加一个数字,他就无法显示出来比如":/image/background.bmp,我在background.bmp加个数字,也就是background1.bmp,当然我源文件也这样修改,可就无法显示出来,可除掉数字的话都是显示啊,我换了几张图片都是这样情况,不知道你遇到过没有啊

#8


是不是pixmap显示的图片有专门的加载图片字母限定啊,

#9


引用 7 楼 chenchizhao 的回复:
请问下,你注意这种问题啊,我在加载的图片后面添加一个数字,他就无法显示出来比如":/image/background.bmp,我在background.bmp加个数字,也就是background1.bmp,当然我源文件也这样修改,可就无法显示出来,可除掉数字的话都是显示啊,我换了几张图片都是这样情况,不知道你遇到过没有啊


这和文件名无关, 前提还是你得确认图片正常加载~```你的代码写得没问题, 所以你可以跟踪下load运行是否正确即可~`` :)

#10


谢谢了,问题已经解决了,这加载的图片都必须先添加grc资源中,才能正常显示啊,我以前在Linux的QT designer中不需要这样添加到grc资源文件中,只需要放到工程文件就行了,,而QT qt creator则需要加载到grc资源中,

#11


引用 10 楼 chenchizhao 的回复:
谢谢了,问题已经解决了,这加载的图片都必须先添加grc资源中,才能正常显示啊,我以前在Linux的QT designer中不需要这样添加到grc资源文件中,只需要放到工程文件就行了,,而QT qt creator则需要加载到grc资源中,

因为你所采用的路径是相对路径~`` 如果采用绝对路径,或设置搜索路径,也可以不用加载到资源文件中~``

#12


加入到资源文件qrc试试