2014-09-25 3 views
-1

Я пытаюсь поместить изображение .png (фирменный логотип) в определенную точку (координату). Я поместил несколько кнопок один за другим, и теперь я хочу, чтобы изображение отображалось чуть ниже этих кнопок. Код ниже должен делать трюк, но координаты просто не работают.Изображение в определенной точке в Qt

//QLabel myLabel; QVBoxLayout *layout; // class members, initialized with 'this' 
QPixmap pixmap("v.png"); 
myLabel.setPixmap(pixmap); 
myLabel.setMask(pixmap.mask()); 
myLabel.setGeometry(QRect(312, 454, 21, 20)); 
layout->addWidget(&myLabel); 

Как следует изменить код, чтобы просто включить это изображение, возможно, в конкретной координатной (так же, как с QPushButton)? Обратите внимание, что комментирование последней строки удаляет изображение, но даже если изображение отображается, кнопки не могут быть нажаты (и они не являются частью «макета»). Пожалуйста, предоставьте код, который позволит достичь позиционирования изображения с заданными координатами.

+1

Является ли 'myLabel' переменной-членом класса? Правильно ли путь к изображению? – thuga

+0

Как вы добавили кнопки? С кодом или в Qt Designer? – Ezee

+0

Где находится 'v.png'? Как вы теперь используете 'myLabel'? – Ezee

ответ

0

QLayout представляет собой контроллер, который положение виджетов добавили к нему. Вот почему у него нет никакого смысла устанавливать координаты для виджета, а затем помещать его в макет. Макет изменит координаты виджетов, как только появится виджет.

Более того, если вы спросите, как установить определенное положение в координатах, вы не должны использовать QLayout вообще, потому что он изменит любую позицию, которую вы установили.

QPixmap pixmap("v.png"); 
myLabel.setPixmap(pixmap); 
myLabel.setMask(pixmap.mask()); 
myLabel.setFixedSize(21, 20); 
myLabel.move(312, 452); //ensure that this coordinates are in you widget 
myLabel.show(); 
0

Вам нужно будет либо показать ярлык, либо поместить его в макет, либо убедиться, что ему предоставлен родительский элемент в конструкторе.

myLabel.setParent(parent_window) 

Метод SetParent также может потребоваться вам для показа.

myLabel.show() 

или

layout.addWidget(myLabel) 
Смежные вопросы