Qt4 QLabel в QTabWidget

Я хочу динамически созданный интерфейс для моей программы 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() запрос не имеет никакого имени, которое я могу использовать, чтобы установить любую опцию. Пожалуйста, помогите мне с этим для () {}

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);
1

Другие решения

Вы можете использовать свойство Pixmap:

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);
}
1

По вопросам рекламы [email protected]