2013-12-18 1 views
3

Я пытаюсь создать графический интерфейс с 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); 

} 

Однако, когда я запускаю это, интервал остается неизменным (т.е. определенно не равен нулю). Если я добавлю больше меток в макет, расстояние будет меньше.

Может кто-нибудь мне объяснить или помочь? Благодаря!

+1

setSpacing (N) устанавливает * минимум * количество пикселей, что QBoxLayout должен размещаться между элементами. Однако, если QBoxLayout имеет дополнительное пространство для заполнения, ему разрешено размещать больше пикселей, чем между элементами. (Кстати, обратите внимание, что вам нужно только один раз вызвать setSpacing (0) - вызов его на каждой итерации цикла for не повредит, но это тоже не имеет никакого значения) –

+0

Спасибо за объяснение, теперь все имеет смысл :) – Tcanarchy

ответ

7

Установка расстояния до 0 и добавление растяжку до и после работ для меня:

l->addStretch(); 
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->addStretch(); 

l->setSpacing(0); 

Кроме того, это работает, я думаю

l->setSizeConstraint(QLayout::SetMaximumSize); 
+0

Большое спасибо! Это именно то, что мне нужно. – Tcanarchy

+0

рад, что это помогает. Я часто отступаю, чтобы растянуть себя ^^ – Pluc

 Смежные вопросы

  • Нет связанных вопросов^_^