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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3 ... 15
1  Qt / Qt Quick / Использование стилей для PdfpageView : Апрель 10, 2024, 11:27
Всем привет.
Может кто подсказать как использовать PdfStyle для обьекта PdfPageView?
Хочу сменить цвет выделеняи слова в тексте документа, но как это сделать не могу найти.
пытаюсь понять как применить вот эту проперти https://doc.qt.io/qt-6/qml-qtquick-pdf-pdfstyle.html#selectionColor-prop
Спасибо
2  Qt / Qt Quick / Re: Найти и выделить слово в TextArea : Апрель 10, 2024, 11:00
https://doc.qt.io/qt-6/qml-qtquick-controls-textarea.html#scrollable-textarea и дальше скроллить ScrollView айтем. Как я понимаю, прямоугольник для скролла можно получить через https://doc.qt.io/qt-6/qml-qtquick-textedit.html#positionToRectangle-method
Спасибо за совет, получилось сделать то что искал.
3  Qt / Qt Quick / Re: Найти и выделить слово в TextArea : Апрель 09, 2024, 20:57
Так QSyntaxHighlighter именно для подсветки, дабы сразу подсветить во всем тексте искомую фразу (при этом не искажая формат текста).

С QML не работаю, но:

У QTextEdit есть document().
У QTextDocument есть find() возвращающий QTextCursor (с выделением искомого).
Дальше QTextEdit::setTextCursor, и на всякий случай есть QTextEdit::ensureCursorVisible(), который «scrolling the text edit if necessary».

Вижу так.

Ну так у меня вопрос же касался Quick а не виджетов, и мне класс не нужен, и таких методов нету у меня дял применения.
4  Qt / Qt Quick / Re: Найти и выделить слово в TextArea : Апрель 09, 2024, 17:34
TextArea наследник TextEdit, а для него есть QSyntaxHighlighter

А вы случайно не пробовали такой метод для выделения?
Получается выделить слово но вот как скрол заставить на позицию того слова перейти. это не срабатывает
5  Qt / Qt Quick / Re: Найти и выделить слово в TextArea : Апрель 05, 2024, 16:21
Нашел вариант, пробижаться по тексту и найти индекс начала и конца слова, и через метод select() с 2 аргументами выделить слово.
Но вот есдинственное что не могу найти, так это как отобразить ту область в тексте где найдено слово.
Как понимаю надо наверное перейти к курсору.
Может кто подсказать, вдруг имели опыт.
6  Qt / Qt Quick / Re: Найти и выделить слово в TextArea : Март 28, 2024, 11:48
Может кто подкинет идею как можно выделать в нем(TextArea) нужные слова?
7  Qt / Qt Quick / Найти и выделить слово в TextArea : Март 26, 2024, 14:23
Всем привет.
Пытаюсь найти способ как слово которое надо найти в тексте расположенным в TextArea, найти и выделить.

Спасибо.
8  Qt / Model-View (MV) / Re: Передача из модели QAbstractListModel QList<QPointF> в qml : Февраль 26, 2024, 10:34
Все таки ошибка была с именами пропертей.
9  Qt / Model-View (MV) / Re: Передача из модели QAbstractListModel QList<QPointF> в qml : Февраль 21, 2024, 12:04
покажи как ты в коде передаешь. судя по ошибке (constructor for ... QQmlPointFValueType to call with value ... QVariantList), ты пытаешься засунуть список точек туда, где ожидается лишь одна точка (не списочная)

Вы были правы, я вместо
Код:
required property list<point> ePoints
пытался подсунуть
Код:
required property point ePoints

Но все равно не моуг нарисовать обьект.
Вот так выглядит выпис в модели перед получением точек
Код:
list:  QVariant(QList<QPointF>, QList(QPointF(300.451,51.5492), QPointF(309.439,50.8578), QPointF(310.13,41.8697), QPointF(301.142,42.5611), QPointF(300.451,51.5492)))

А вот код в qml
Код:
Repeater
        {
            id: repeaterLimitShape

            model: root.pelData.gaugeLimitModel
            anchors.fill: parent

            delegate: Shape
            {
                id: delegateLimitShape

                required property list<point> ePoints

                anchors.fill: parent
                layer.samples: 8

                ShapePath
                {
                    id: trackShapeLimit

                    capStyle:    Qt.FlatCap
                    strokeColor: "red"
                    fillColor: "red"
                    strokeWidth: 1

                    Component.onCompleted:
                    {
                        console.log("ePoints: ", delegateLimitShape.ePoints)
                    }

                    PathPolyline
                    {
                        id: ppl

                        path: delegateLimitShape.ePoints

                    }
                }
            }
        }

Выпис в консоли выглядит вот так
Код:
qml: ePoints:  []

Тут я немного в растерянности.
10  Qt / Model-View (MV) / Передача из модели QAbstractListModel QList<QPointF> в qml : Февраль 20, 2024, 22:43
Всем привет.
У меня имеется в qml репитер для нескольких Shape, и чтоыб его нарисовать мне надо каждому передать лист QPointF
И может я что-то не так с этим листом делаю но у меня идет в консоли такой выпис
Код:
Could not find any constructor for value type QQmlPointFValueType to call with value QVariant(QVariantList, QList(QVariant(QPointF, QPointF(300.451,51.5492)), QVariant(QPointF, QPointF(300.451,51.5492)), QVariant(QPointF, QPointF(300.451,51.5492)), QVariant(QPointF, QPointF(300.451,51.5492)), QVariant(QPointF, QPointF(300.451,51.5492))))
PathPolyline: path of type 26 not supported

Может кто подскажет как правильно лист точек передать репитеру?
Спасибо
11  Qt / Qt Quick / Re: Расположение страницу pdf по центру окна : Январь 17, 2024, 13:00
По поводу центровки для pageHolder я понял(я вроде пробовал раньше но чет было не так).
Но вот вопрсо что происходит если растянуть по ширине fitToWidth? Страница уже имеет не правильную шинину, а должна быть растянута в ширину по паренту. С зумом там тоже все не очень с позиционированием.
В общем задавать жесткие размеры ширины для pageHolder не очень хороший вариант.
12  Qt / Qt Quick / Re: Расположение страницу pdf по центру окна : Январь 17, 2024, 12:45
Извиняюсь канечно но что надо править и для чего в cmake? Я же собираю с ним и все работает.
13  Qt / Qt Quick / Re: Расположение страницу pdf по центру окна : Январь 16, 2024, 18:45
Если для лучшего пониманяи проблемы нужен весь код то вот у меня есть тестовый проект https://files.fm/u/q9f8efj4hf
14  Qt / Qt Quick / Расположение страницу pdf по центру окна : Январь 16, 2024, 18:21
Всем привет.
Использую PdfScrollablePageView так как мне надо работать с однйо страницей, скролить если я использовал zoom или растянул по ширине страницу(скрол в данном случаи будет по вертикали).
данный обьект наследован от Flickable(начинается большое колличесвто проблем позиционированием и центровкой) по сравнению с PdfpageView.

Требуется при открытии растягивать страницу по высоте, иметь background так как нужен цвет фона вне страницы. Этого я добился когда взял исходники PdfScrollablePageView и внутри завернул обьект что отвечает за саму страницу в еще один обьект pageHolder дял фона.
Ниже данный кусок кода
Код:
   Rectangle
    {
        // добавлен был к исходному коду вот этот обьект
        id: pageHolder

        width: pdfView.width
        height: image.height
        color: "color"

        Rectangle
        {
            id: paper

            width: rot90 ? image.height : image.width
            height: rot90 ? image.width : image.height

            property real rotationModulus: Math.abs(root.pageRotation % 180)
            property bool rot90: rotationModulus > 45 && rotationModulus < 135
            property real minScale: 0.1
            property real maxScale: 10
            anchors.centerIn: parent

            PdfPageImage
            {
                id: image

                document: root.document
                currentFrame: pageNavigator.currentPage
                asynchronous: true
                fillMode: Image.PreserveAspectFit
                rotation: root.pageRotation
                property real pageScale: image.paintedWidth / document.pagePointSize(pageNavigator.currentPage).width
                anchors.centerIn: parent

                Shape
                {
                    anchors.fill: parent
                    visible: image.status === Image.Ready
Вот так выглядит страницу при первом открытии
https://ibb.co/ChThkJQ
Идея рабочая но плохая так как мне пришлось целый файл исходного кода к данному обьекту копировать.

И решил попробовать сделать почти по принципу орегинального кода, но снаружи сделал pageHolder что делает вот такой вид и уже не правильный. https://ibb.co/BGhdpww
Код:
Rectangle
{
    id: root

    property alias pageRotation:    pdfPageView.rotation
    property alias document:        pdfPageView.document
    property alias renderScale:     pdfPageView.renderScale
    property alias sourceSize:      pdfPageView.sourceSize
    property real threeWidth: 0

    function goToPage(page)
    {
        pdfPageView.goToPage(page)
    }

    function scaleToPage()
    {
        pdfPageView.scaleToPage()
    }

    function scaleToWidth()
    {
        pdfPageView.scaleToWidth()
    }

    Rectangle
    {
        id: pageHolder

        width: root.width
        height: root.height
        color: "red"


        PdfScrollablePageView
        {
            id: pdfPageView

            anchors.fill: parent

И еще один вариант это использовать PdfPageView для которого сделать внешнйи Flickable, но и тут возникли трудности с позиционированием.
Код:
   Flickable
    {
        id: flickable

        width: root.width
        height: root.height

        contentWidth: pdfPageView.width
        contentHeight: pdfPageView.height

        Rectangle
        {
            id: pageHolder

            width: root.width
            height: root.height
            color: "red"
            //color: rootViewPdf.pelData.pdfViewerProperties.colorBackground


            PdfPageView
            {
                id: pdfPageView
                width: root.width
                height: root.height
            }
        }
    }
И выглядит это уже совершенно странно, хотя мне кажется это должно быт ьправильным решенеим. Само собою скрол уже тут не работает. https://ibb.co/JzWhnL6

Может кто то с этим посоветовать какое то решение?
15  Qt / Мультимедиа / Re: Image в qml : Январь 05, 2024, 13:47
В общем я взял функции а точнее принцип рабоыт для растягивания из модуля по работе с pdf и вроде как помогло.
Код фактически выглядит сейчас так(из 2 файлов, 3 части с кнопками умправления, центр изображение и статусбар низ. 2 файл это непосредственно центр):

Код:
Item
{
    id: root
 
    ColumnLayout
    {
        anchors.fill: parent
        spacing: 10
 
        Item
        {
            id: headerRec
 
            Layout.fillWidth: true
            implicitHeight: childrenRect.height
 
            RowLayout
            {
                id: rowLayoutToolBar
 
                width: parent.width
                spacing: 20
 
                ButtonComponent
                {
                    id: zoomZoomIn
                }
 
                ButtonComponent
                {
                    id: zoomZoomOut
                }
            }
        }
 
        Item
        {
            Layout.fillWidth: true
            Layout.fillHeight: true
            Layout.alignment: Qt.AlignBottom
 
            CustomImage
            {
                id: viewerImage
 
                anchors.fill: parent
                visible: root.pPelData.bShowImage
                pelData: pPelData
            }
        }
 
        StatusBar
        {
            id: statusBar
 
            Layout.fillWidth: true
        }
    }
}

И код самого центрального обьекта
Код:
Flickable
{
    id: root
 
    Rectangle
    {
        id: parentImage
 
        anchors.fill: parent
        color: "#5a5a5a"
        clip: true
        border.color: "red"
        border.width: 1
 
        Image
        {
            id: imageJpg
 
            property real rotationModulus: Math.abs(root.pageRotation % 180)
            property bool rot90: rotationModulus > 45 && rotationModulus < 135
 
            fillMode: Image.PreserveAspectFit
            source: "pathToFile"
            anchors.top: parent.top
            anchors.bottom: parent.bottom
            anchors.horizontalCenter: parent.horizontalCenter
 
            Rectangle
            {
                anchors.fill: parent
                border.color: "blue"
                border.width: 1
                color: "transparent"
            }
 
            antialiasing: true
            rotation: root.pageRotation
        }
    }
}

А проблемы теперь по факту 2, первая это странно выглядят границы центрального обьекта с изображением, при этом само изображение нормально распологается. Может я не должен использовать anchors.fill: parent для parentImage.
Получается что верхняя граница(она красного цвета) находится под верхнми обьектом.
https://ibb.co/Rj56nx5

А вторая проблема это то что при растягивании изображения у меня скрол не работает. Может при прокручивании колосека на мыши обьект Flickable должен какой то сигнал испускать?
Страниц: [1] 2 3 ... 15

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