1

我想从 .ini 文件为我的 hello-world QT + C++ 程序动态创建接口。

第 1 步我使用 QSettings 读取设置文件 - 这很简单。

2步骤我尝试绘制界面:

//i == 5;
for(int temp=1;temp <= i;temp++){
    QString tName = settings.value("/Level" + QString::number(temp) + "/Name", "").toString();
    QString tImage = settings.value("/Level" + QString::number(temp) + "/Image", "").toString();
    QString Imgpath = QApplication::applicationDirPath() + "/images/" + tImage;
    QPixmap pix(Imgpath);
    tab.addTab(new QLabel(Imgpath, &tab), tName);
}

一切看起来都很棒 - QLabel 包含图像的文件路径,TAB 的标题包含来自 iniFile 的正确名称。但!我想将 setPixmap() 设置为 QLabel,这就是问题所在。new QLabel()查询没有我可以用来设置任何选项的任何名称。请帮我解决这个问题 for(){}

4

2 回答 2

1

你可以这样转换:

QPixmap pix(Imgpath);
tab.addTab(new QLabel(Imgpath, &tab), tName);

至:

QLabel* label = new QLabel(Imgpath, &tab);
label->setPixmap(QPixmap(Imgpath));
tab.addTab(label, tName);
于 2014-01-12T21:30:37.023 回答
1

您可以使用 Pixmap 属性:

像素图:QPixmap

此属性保存标签的像素图。

如果没有设置像素图,这将返回 0。

设置像素图会清除任何以前的内容。好友快捷方式(如果有)被禁用。

因此,您将在标签上设置像素图,如下所示:

//i == 5;
for (int temp = 1; temp <= i; ++temp) {
    QString tName = settings.value("/Level" + QString::number(temp) + "/Name", "").toString();
    QString tImage = settings.value("/Level" + QString::number(temp) + "/Image", "").toString();
    QString Imgpath = QApplication::applicationDirPath() + "/images/" + tImage;
    QPixmap pix(Imgpath);
    QLabel *myLabel = new QLabel(Imgpath, &tab);
    myLabel->setPixmap(pix);
    tab.addTab(myLabel, tName);
}
于 2014-01-12T21:31:51.853 回答