Russian Qt Forum
Ноябрь 23, 2024, 00:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Произвольная форма кнопки  (Прочитано 5846 раз)
Larry
Гость
« : Декабрь 17, 2015, 16:36 »

Добрый день, форумчане.
Подскажите пожалуйста, есть ли возможность сделать компонент произвольной формы, по рисунку?
Спасибо.
« Последнее редактирование: Декабрь 18, 2015, 15:04 от Larry » Записан
BuRn
Гость
« Ответ #1 : Декабрь 18, 2015, 08:29 »

Ты можешь нарисовать все что угодно, используй Canvas
Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #2 : Декабрь 18, 2015, 10:49 »

Помимо Canvas, если кнопка в виде картинки, можешь использовать BorderImage для тянущейся кнопки или обычный Image если кнопка фиксированного размера.

Так-же правильнее будет не изобретать свою кнопку с нуля а взять Button из QtQuick.Controls и переопределить только стиль.
Записан

Гугль в помощь
Larry
Гость
« Ответ #3 : Декабрь 18, 2015, 11:53 »

Помимо Canvas, если кнопка в виде картинки, можешь использовать BorderImage для тянущейся кнопки или обычный Image если кнопка фиксированного размера.

Так-же правильнее будет не изобретать свою кнопку с нуля а взять Button из QtQuick.Controls и переопределить только стиль.

Спасибо за ответы. Т.е. я могу с помощью стилей сделать произвольную форму для кнопки?
Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #4 : Декабрь 18, 2015, 12:02 »

Спасибо за ответы. Т.е. я могу с помощью стилей сделать произвольную форму для кнопки?

Да. Единственное, клики она по прежнему будет отрабатывать в прямоугольной области.
Записан

Гугль в помощь
Larry
Гость
« Ответ #5 : Декабрь 18, 2015, 13:04 »

Спасибо большое.
Чтобы не плодить тему отдельную, то задам здесь еще вопрос:
как вставить изображение в TableView, а то никак не получается:

Код:
ListModel
{
    id: _model
}

TableView
{
    id: _tableView
    width: 200
    anchors.fill: _view
    anchors.horizontalCenter: _view.horizontalCenter

    TableViewColumn
    {
        role: "image"
        title: "Title"
        width: 50

        delegate: _delegate
    }
   
    model: _model
}

Component
{
    id: _delegate

    Item
    {
        width:  32
        height: 32

        Image
        {
            anchors.horizontalCenter: _tableView.horizontalCenter
            anchors.verticalCenter:   _tableView.verticalCenter

            width:  32
            height: 32

            source: "antena"
        }
    }
}
Записан
Larry
Гость
« Ответ #6 : Декабрь 18, 2015, 15:04 »

C изображениями уже разобрался Улыбающийся
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Декабрь 18, 2015, 15:50 »

C изображениями уже разобрался Улыбающийся

Было бы хорошо, если бы написали в чем была проблема )
А то придет человек от гугла с такой проблемой и увидев только "Спасибо, сам разобрался" без решения проблемы будет очень растроенным Улыбающийся
Записан

Larry
Гость
« Ответ #8 : Декабрь 18, 2015, 16:03 »

да, Вы правы. Но выложу чуть позже, т.к. удалил пока эту часть и отрабатываю в чистом проекте - играюсь со свойствами TableView.
Записан
Larry
Гость
« Ответ #9 : Декабрь 18, 2015, 17:53 »

Немного переделал, но теперь все работает. Только не сделал headerDelegate.

Код:
    Item
    {
        id: mainItem
        anchors.fill: parent

        TableView
        {
            id: table
            anchors.fill: parent

            TableViewColumn
            {
                role: "name"
                title: "Name"
                width: table.width/3

                delegate: textDelegate
            }

            TableViewColumn
            {
                role: "level"
                title: "Level"
                width: table.width/3

                delegate: imageDelegate
            }

            TableViewColumn
            {
                role: "count"
                title: "Count"
                width: table.width/3

                delegate: imageDelegate
            }

            model: listmodel

            rowDelegate: _rowDelegate
        }

        ListModel
        {
            id: listmodel

            ListElement { name: "avto1"; level: "antena"; count: "sat" }
            ListElement { name: "avto2"; level: "antena"; count: "sat" }
            ListElement { name: "avto3"; level: "antena"; count: "sat" }
        }

        Component
        {
            id: textDelegate

            Item
            {
                Rectangle
                {
                    anchors.fill: parent
                    color: (styleData.selected)?"skyblue":"white"
                    border.width: 1
                    border.color: "black"

                    Text
                    {
                        color: (styleData.selected)?"red":"black"
                        anchors.horizontalCenter: parent.horizontalCenter
                        anchors.verticalCenter: parent.verticalCenter
                        text: styleData.value
                    }
                }
            }
        }

        Component
        {
            id: imageDelegate

            Rectangle
            {
                border { width: 1; color: "black" }
                color: (styleData.selected)?"skyblue":"white"

                Image
                {
                    width: 32
                    height: 32
                    anchors.horizontalCenter: parent.horizontalCenter
                    anchors.verticalCenter: parent.verticalCenter
                    source: styleData.value
                }
            }
        }

        Component
        {
            id: _rowDelegate

            Item
            {
                height: 32
            }
        }
    }
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 23.