Я хочу динамически созданный интерфейс для моей программы hello-world QT + C ++ из файла .ini.
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. НО! Я хочу установить Pixmap () на QLabel, и здесь есть проблема. new QLabel()
запрос не имеет никакого имени, которое я могу использовать, чтобы установить любую опцию. Пожалуйста, помогите мне с этим для () {}
Вы можете преобразовать это:
QPixmap pix(Imgpath);
tab.addTab(new QLabel(Imgpath, &tab), tName);
чтобы:
QLabel* label = new QLabel(Imgpath, &tab);
label->setPixmap(QPixmap(Imgpath));
tab.addTab(label, tName);
Вы можете использовать свойство Pixmap:
Это свойство содержит растровое изображение метки.
Если изображение не было установлено, это вернет 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);
}