Я пытаюсь создать графический интерфейс с QtCreator. Для этого графического интерфейса мне нужно отображать несколько изображений разных размеров рядом друг с другом. Эти изображения должны касаться друг друга.Интервал между виджетами в QHBoxLayout
Я использую QWidget
с QHBoxLayout
, где я добавляю метки (с разными размерами), содержащие изображения.
В соответствии с связанными вопросами, я должен использовать setSpacing
и setContentsMargin
, чтобы удалить эти пробелы, но это не сработает; Я несколько раз пробовал.
Вот код:
QWidget *widget = new QWidget(ui->tagcloud);
QHBoxLayout * l = new QHBoxLayout(widget);
ui->tagcloud->setWidget(widget);
for(int i=0;i<list.size();++i)
{
QLabel *lab = new QLabel;
QPixmap pic((list[i].imgPath).c_str()); //This fetches the image
int sizeChange = 50 + (2*list[i].percent); //Calculates the size of the image
lab->setFixedSize(QSize(sizeChange, sizeChange));
lab->setPixmap(pic);
lab->setScaledContents(true);
l->addWidget(lab);
l->setSpacing(0);
}
Однако, когда я запускаю это, интервал остается неизменным (т.е. определенно не равен нулю). Если я добавлю больше меток в макет, расстояние будет меньше.
Может кто-нибудь мне объяснить или помочь? Благодаря!
setSpacing (N) устанавливает * минимум * количество пикселей, что QBoxLayout должен размещаться между элементами. Однако, если QBoxLayout имеет дополнительное пространство для заполнения, ему разрешено размещать больше пикселей, чем между элементами. (Кстати, обратите внимание, что вам нужно только один раз вызвать setSpacing (0) - вызов его на каждой итерации цикла for не повредит, но это тоже не имеет никакого значения) –
Спасибо за объяснение, теперь все имеет смысл :) – Tcanarchy