Qt 如何使用Pixmap(QList)更改动态QLabel

Qt 如何使用Pixmap(QList)更改动态QLabel,qt,qpixmap,qlabel,qlist,Qt,Qpixmap,Qlabel,Qlist,我有以下场景:使用add按钮创建一个动态QLabel,它得到一个QPixmap,第一个与另一个不同。所以如果我再加上一个,一切都很好。问题从添加第三个开始。然后我的第二个标签应该被替换。我给你一些图片来解释我的问题和我的源代码。 首先,点击2次添加后的当前情况图片: 在我点击了第三次之后,你可以看到中间的PixMax应该被一个没有横杆的替换。 #包括“mainwindow.h” #包括“ui_main window.h” 主窗口::主窗口(QWidget*父窗口): QMainWindow(父

我有以下场景:使用add按钮创建一个动态QLabel,它得到一个QPixmap,第一个与另一个不同。所以如果我再加上一个,一切都很好。问题从添加第三个开始。然后我的第二个标签应该被替换。我给你一些图片来解释我的问题和我的源代码。 首先,点击2次添加后的当前情况图片:

在我点击了第三次之后,你可以看到中间的PixMax应该被一个没有横杆的替换。

#包括“mainwindow.h”
#包括“ui_main window.h”
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
计数器=0;
用户界面->设置用户界面(此);
//维特勒链路
}
MainWindow::~MainWindow()
{
删除用户界面;
}
void主窗口::changeEvent(QEvent*e)
{
QMainWindow::changeEvent(e);
开关(e->type()){
案例QEvent::LanguageChange:
用户界面->重传(此);
打破
违约:
打破
}
}
void main window::在按钮上单击添加
{
int-xposition;
QPixmap垂直链接(“C:/Users/Boushar/Desktop/Bachember\u Fred/Coden/Verteiler\u链接”);
QPixmap vert_-mitte(“C:/Users/Boushar/Desktop/Bamber_-Fred/Coden/Verteiler_-mitte”);
QPixmap vert_rechts(“C:/Users/Boushar/Desktop/Bachember_Fred/Coden/Verteiler_rechts”);
QLabel*label=新的QLabel();
//将标签添加到列表中
qlist.append(标签);
xposition=计数器*60;
如果(计数器==0)
{
标签->setPixmap(垂直链接);
}
其他的
{
xposition=xposition+35;
标签->setPixmap(垂直方向);
}
如果(计数器>1)
{
QLabel*label2=新的QLabel();
label2->setPixmap(垂直方向);
label2->show();
label2->setParent(本);
label2->setGeometry((xposition-60),500125172);
qlist.replace(2,标签2);
}
标签->设置父项(此项);
标签->设置几何体((xposition),500125172);
标签->显示();
计数器++;
}
我从QT“setGeometry:无法在“QLabelClassWindow”上设置几何图形89x172+915+454。结果几何图形:116x172+915+454(帧:8,30,8,8)。” 我想是的,因为我只是更改了列表中的值,而不是显示的值,但是我不知道如何正确地编码它。 谢谢你的帮助。

我知道了

void主窗口::在按钮上单击添加()
{
int-xposition;
QPixmap垂直链接(“C:/Users/Boushar/Desktop/Bachember\u Fred/Coden/Verteiler\u链接”);
QPixmap vert_-mitte(“C:/Users/Boushar/Desktop/Bamber_-Fred/Coden/Verteiler_-mitte”);
QPixmap vert_rechts(“C:/Users/Boushar/Desktop/Bachember_Fred/Coden/Verteiler_rechts”);
QLabel*label=新的QLabel();
//将标签添加到列表中
xposition=计数器*60;
如果(计数器==0)
{
标签->setPixmap(垂直链接);
}
其他的
{
xposition=xposition+35;
标签->setPixmap(垂直方向);
}
如果(计数器>1)
{
qlist.last()->setPixmap(垂直方向);
}
qlist.append(标签);
标签->设置父项(此项);
标签->设置几何体((xposition),500125172);
标签->显示();
计数器++;
}
在添加新的列表项之前,只需将我的上一个列表项更改为另一个pixmap。 剩下的唯一问题是如何设置特定列表项中的数据。就像上一次一样我明白了

void主窗口::在按钮上单击添加()
{
int-xposition;
QPixmap垂直链接(“C:/Users/Boushar/Desktop/Bachember\u Fred/Coden/Verteiler\u链接”);
QPixmap vert_-mitte(“C:/Users/Boushar/Desktop/Bamber_-Fred/Coden/Verteiler_-mitte”);
QPixmap vert_rechts(“C:/Users/Boushar/Desktop/Bachember_Fred/Coden/Verteiler_rechts”);
QLabel*label=新的QLabel();
//将标签添加到列表中
xposition=计数器*60;
如果(计数器==0)
{
标签->setPixmap(垂直链接);
}
其他的
{
xposition=xposition+35;
标签->setPixmap(垂直方向);
}
如果(计数器>1)
{
qlist.last()->setPixmap(垂直方向);
}
qlist.append(标签);
标签->设置父项(此项);
标签->设置几何体((xposition),500125172);
标签->显示();
计数器++;
}
在添加新的列表项之前,只需将我的上一个列表项更改为另一个pixmap。
剩下的唯一问题是如何设置特定列表项中的数据。像上一个之前的标签一样

在哪里删除上一个标签?为什么不使用布局呢?为什么不创建一个标签,只更改上面的图片?当
计数器>1
时,为什么要创建两个标签?我没有删除上一个标签。标签。这听起来像个问题;)。我不使用布局,因为我必须将我的标签放在彼此相邻的位置,或者我可以使用布局吗?当图片处于动态状态时,如何更改其中的图片?我创建了第二个标签,将其替换为on,然后通过设置为零,您可以将小部件彼此紧挨着放置
setPixmap
更改图片,只需将
QLabel
设置为
QMainWindow
类的成员。我仍然不明白,为什么您需要
label2
label
。另外,如果您需要将多张图片合并为一张,您可以在
QPixmap
类中使用
QPainter
,而无需创建多个标签。您可以给我一个代码片段吗?我的意思是,我的实际问题是,我不知道如何更改以前创建的标签的值。如何到达该标签?在哪里删除以前的标签?为什么不使用布局呢?为什么不创建一个标签,只更改上面的图片?当
计数器>1
时,为什么要创建两个标签?我没有删除上一个标签。标签。这听起来像个问题;)。我不使用布局,因为我必须将我的标签放在彼此相邻的位置,或者我可以使用布局吗?当图片处于动态状态时,如何更改其中的图片?我创建了第二个标签,用on替换它,然后才可以pl