LINUX.ORG.RU

Qt: QPushButton в плотную друг к другу и Картинка на весь QPushButton

 ,


0

2

Добрый вечер! Подскажите как сделать все кнопки прилегающими друг к другу и к рамке окна? Еще вопросик: Как сделать картинку на всю кнопку?

Картинку накладываю на кнопку вот так: Button->setIcon(QIcon("image/button.png"));

Имею в итоге: Изображение 1! Изображение 2!


Насколько я знаю, это зависит от темы. Есть два варианта: скрасноглазить свой stylesheet для кнопок или написать свою кнопку. Лучше первый вариант.

a1batross ★★★★★
()
Ответ на: комментарий от a1batross

Решил проблему так:

Button = new QPushButton;
Button->setFixedSize(256, 320); //размер картинки
Button->setFlat(true);
Button->setIcon(QIcon("image/button.png"));
Button->setIconSize(QSize(Button->width(), Button->height()));

eRUVIS
() автор топика
Ответ на: комментарий от CrossFire

Qt без QML тоже нужно уметь. Вот сейчас на работе вспомогательный софт именно на Qt без QML (так проще).

invy ★★★★★
()
Ответ на: комментарий от invy

Для классических десктопных интерфейсов с кучей таблиц и небольшой кастомизацией — пожалуй да. А вот когда начинается переизобретение QML для сенсорных дисплеев, то другой вопрос.

CrossFire ★★★★★
()
Ответ на: комментарий от CrossFire

Ну у нас скорее MDI - куча модулей, а в модулях кто во что гаразд, в scrollarea виджетов - святое дело :D

invy ★★★★★
()

Я так понял расположить QPushButtons вплотную друг другу можно только используя QML? ;(

eRUVIS
() автор топика
Ответ на: комментарий от eRUVIS

Возможно, не так понял задачу, но для расположения кнопок используешь gridlayout с нулевыми отступами и промежутками между элементами, а чтобы сделать картинку на всю кнопку, можно убрать с неё текст и установить картинку через qss.

Braga_man
()
Ответ на: комментарий от Braga_man

Картинку на все кнопку я уже сделал, выше написал кусок кода. Про нулевые отступы и промежутку можно поподробнее(привести пример). Спасибо!

eRUVIS
() автор топика
Ответ на: комментарий от Braga_man

Все, разобрался, спасибо! Может кому пригодится:

mainLayout->setMargin(0);
mainLayout->setSpacing(0);

eRUVIS
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.