我有以下场景:使用添加按钮我创建一个动态QLabel,它获得一个QPixmap,第一个与另一个不同。所以,如果我添加第二个,一切都很好。问题从添加第三个开始。然后我的第二个显示的标签应该被替换。我给你一些图片来解释我的问题和我的源代码。 首先,点击两次后的当前情况图片点击:
在这之后我第三次点击它,你可以看到中间的像素图应该替换为没有交叉开关的像素图:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
counter=0;
ui->setupUi(this);
//Verteiler links
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::on_pushButton_add_clicked()
{
int xposition;
QPixmap vert_links("C:/Users/Boushar/Desktop/Bachelor_Fred/Coden/Verteiler_links");
QPixmap vert_mitte("C:/Users/Boushar/Desktop/Bachelor_Fred/Coden/Verteiler_mitte");
QPixmap vert_rechts("C:/Users/Boushar/Desktop/Bachelor_Fred/Coden/Verteiler_rechts");
QLabel *label = new QLabel ();
//add Label to the List
qlist.append(label);
xposition=counter*60;
if (counter==0)
{
label->setPixmap(vert_links);
}
else
{
xposition=xposition+35;
label->setPixmap(vert_rechts);
}
if (counter>1)
{
QLabel *label2 = new QLabel ();
label2->setPixmap(vert_mitte);
label2->show();
label2->setParent(this);
label2->setGeometry((xposition-60),500,125,172);
qlist.replace(2,label2);
}
label->setParent(this);
label->setGeometry((xposition),500,125,172);
label->show();
counter++;
}
我从QT" setGeometry得到以下错误:无法在QLabelClassWindow'上设置几何体89x172 + 915 + 454。产生的几何形状:116x172 + 915 + 454(框架:8,30,8,8)。" 我想是的,因为我只是更改了列表中的值而不是显示的值,但我不知道如何正确编码。 谢谢你的帮助。
答案 0 :(得分:0)
我明白了
void MainWindow::on_pushButton_add_clicked()
{
int xposition;
QPixmap vert_links("C:/Users/Boushar/Desktop/Bachelor_Fred/Coden/Verteiler_links");
QPixmap vert_mitte("C:/Users/Boushar/Desktop/Bachelor_Fred/Coden/Verteiler_mitte");
QPixmap vert_rechts("C:/Users/Boushar/Desktop/Bachelor_Fred/Coden/Verteiler_rechts");
QLabel *label = new QLabel ();
//add Label to the List
xposition=counter*60;
if (counter==0)
{
label->setPixmap(vert_links);
}
else
{
xposition=xposition+35;
label->setPixmap(vert_rechts);
}
if (counter>1)
{
qlist.last()->setPixmap(vert_mitte);
}
qlist.append(label);
label->setParent(this);
label->setGeometry((xposition),500,125,172);
label->show();
counter++;
}
在添加新的listitem之前,只需将我的上一个listitem更改为另一个pixmap。 唯一剩下的问题是如何设置特定列表项的数据。像前一个一样