Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Заблокирован

Текст браузер с картинками и стилизованным текстом

19.01.2018, 14:26. Показов 1410. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, буду делать свой мессенджер типа вац апа, морда на QML, вот подумываю, взять что-то готовое для главного окна с сообщениями типа QTextBrowser или своё накатать... Думаю, в этом окне будет стилизованный текст, то есть у каждого сообщения могут быть разные цвета, шрифты и пр, в тексте могут встречаться картинки... QTextBrowser нормальное решение или есть что-то по лучше? В нём походу всё через HTML оформлять придётся... Если в нём всё через HTML, может тогда проще WebKit задействовать и через WebView просто HTML-ём всё оформлять и рендерить?

О.. пока писал - придумал. HTML мне никогда не нравился, хотя я с ним на ты. Сделаю всё на динамическом QML! То есть будет холст, куда будут динамический ембедится елементы QML! Круто


P.S.: покажите мне дизайн красивого месседжера, смотрю на все - одна фигня какая-то, похожая на студенческую курсовую Какие-то квадратные окна с парой подразделов и всё... Хотя.. может так и нужно делать, ведь это всего лишь чат

Добавлено через 34 минуты
Наверное на счёт окна с сообщениями в мессенджере в виде "каждое сообщение - отдельный item" я погорячился, всё таки Repeater - очень тормозная штука и даже каких-то 1000 разноцветных прямоугольников создаёт секунд 5... :
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import QtQuick 2.9
import QtQuick.Controls 2.3
import QtQuick.VirtualKeyboard 2.3
import QtQuick.Layouts 1.3
 
ApplicationWindow
{
    id: window
    visible: true
    width: 800
    height: 600
    title: qsTr("Messenger")
    Component.onCompleted: showMaximized();
 
    Item
    {
        id: mainFrame
        anchors.fill: parent
 
        ListModel
        {
            id: itemModel
        }
 
        ScrollView
        {
            anchors.fill: parent
 
            ColumnLayout
            {
                Repeater
                {
                    model: itemModel
                    delegate: Rectangle {
                        width: mainFrame.width - 20
                        height: 30
                        color: Qt.rgba(Math.random(),Math.random(),Math.random(),1);
                    }
                }
            }
 
        }
 
        Button
        {
            text: "do it!"
 
            onClicked:
            {
                for(var i = 0; i < 1000; i++)
                {
                    itemModel.append({'time': 1});
                }
            }
        }
    }
}


Ой.. а ещё в каждом новом релизе впаривали, мол мы ускорили инстанциатор элементов...враньё, ничего не поменялось, как было всё дико тормозным при царе горохе - так и осталось.

Добавлено через 8 минут
Из за чего Repeater такой тормозной? Хмм...ну наверное:
1. В коде выше в модель элементы добавляются поэлементно, то есть скорее всего там идёт push_back на каждый элемент, без предварительного резерва
2. Ну и наверное для каждого ректангла так же вызывается new...

Хоть свой менеджер памяти для QML пиши...
А.. кстати, зачем менеджер памяти, можно свой Repeater написать! (с менеджером памяти ). Наверное займусь этим

Добавлено через 3 минуты
хотя не, бред... это ж геморр ещё тот, наверное всё таки проще текстовое окно через HTML оформить

Добавлено через 2 часа 1 минуту
что-то никто мне ничего не советует...
Я вот тут подумал, можно оставить в окне чата элементы в виде QML Item-ов, просто накатать кастомный скрол вью, который будет респаунить только те элементы, которые в окне...

Добавлено через 19 минут
вот я туплю, это надо ListView переделывать, что бы он фетчил из модели только то, что нужно...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.01.2018, 14:26
Ответы с готовыми решениями:

Таблица с картинками и текстом
Помогите отредактировать таблицу Мне нужно что бы картинки были как щас,а все 3-ие столбцы были вместе,как объединить...

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

Эффекты с картинками и текстом
Здравствуйте! подскажите, как создать такие эффекты с картинками и текстом, как на http://www.flowersbaza.ru

5
 Аватар для dopleref
42 / 52 / 33
Регистрация: 15.12.2015
Сообщений: 199
22.01.2018, 06:05
Видел пример (непомню точно где) ListView и в нем несколько тысяч элементов,
работало нормально, без тормозов.
Если сделаете что то рабочее зашлите ссылочку на github, интересно посмотреть что получиться,
хотя может быть это комерческая тайна.
п.с. я вот только не знаю можно ли на форум ссылки на github кидать.
0
Заблокирован
22.01.2018, 09:50  [ТС]
Цитата Сообщение от dopleref Посмотреть сообщение
п.с. я вот только не знаю можно ли на форум ссылки на github кидать.
А почему нет? Ещё как нужно, это же фрисофт.
Мессенджер не покажу, это пропритарный...
По поводу ListView, нужно делать свой, а так же делать свою модель данных от QAbstractItemModel
0
 Аватар для dopleref
42 / 52 / 33
Регистрация: 15.12.2015
Сообщений: 199
22.01.2018, 11:32
Цитата Сообщение от Digital_Cry Посмотреть сообщение
Ещё как нужно, это же фрисофт.
ну это же, продвижение своего софта в какой то мере.

Цитата Сообщение от Digital_Cry Посмотреть сообщение
Мессенджер не покажу, это пропритарный...
понятно, жаль.
0
60 / 56 / 21
Регистрация: 31.03.2014
Сообщений: 234
22.01.2018, 14:38
Пробовал с ListView играться. Самописаная модель с примерно 800 элементами (делегат с 3-мя label'ами). Бегало весьма шустро.
0
Заблокирован
23.01.2018, 16:37  [ТС]
Цитата Сообщение от ldir82 Посмотреть сообщение
Бегало весьма шустро.
бегает она шустро и с 10 000 элементов, проблема в скорости загрузки, то есть в скорости инстанцирования объектов через Repeater

Добавлено через 21 час 29 минут
Цитата Сообщение от dopleref Посмотреть сообщение
понятно, жаль.
я потом скриншот покажу
В общем, провёл тут серию тестов, в принципе, простого ListView достаточно, он нормально фетчит модель частями, единственное мне не очень понятно, на каком основание он выбирает range для фетчинга, учитывая то, что в ListView у меня разные делегаты, то есть в одном ListView лежат разные по размеру QML Item-ы (да да, так можно сделать)... Наверное он просто берёт с запасом ну там +- элементов 50 за пределы экрана в среднем...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2018, 16:37
Помогаю со студенческими работами здесь

Сделать простой слайдер с картинками и текстом
Как сделать простой слайдер по блокам(текст+картинка) как на фото? может кто привести простой пример? P.S. Я гуглил, и довольно...

Способы создания кнопки с текстом и картинками
Всем привет! Как создавать кнопки с текстом и картинкой? Ранее создавал так: Делаю в любом редакторе текст с картинкой, сохраняю как...

Нужна попомощь по роботе с картинками и большим текстом
Привет Всезнающим! Подскажите пожалуйста каким образом средствами T-SQL (MS SQL SERVER 2000) в поле типа image можна запихнуть...

Самый подходящий компонент для отчетов с картинками, таблицами и текстом
Посоветуйте компонент для генерации отчетов с картинками, таблицами и текстом. Пользователь будет только просматривать его, сохранять и...

Пост с тремя картинками к ряду и текстом под каждой из них
Привет, нужно сделать что-то вроде этого: http://i2.imageban.ru/out/2017/12/20/aa62ad37754603c4fada16d44e02675d.png Это можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Основы WebGL. Раскрашивание вершин с помощью VBO
8Observer8 05.07.2025
На русском https:/ / vkvideo. ru/ video-231374465_456239020 На английском https:/ / www. youtube. com/ watch?v=oskqtCrWns0 Исходники примера:
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
Создаем микросервисы с Go и Kubernetes
golander 02.07.2025
Когда я только начинал с микросервисами, все спорили о том, какой язык юзать. Сейчас Go (или Golang) фактически захватил эту нишу. И вот почему этот язык настолько заходит для этих задач: . . .
C++23, квантовые вычисления и взаимодействие с Q#
bytestream 02.07.2025
Я всегда с некоторым скептицизмом относился к громким заявлениям о революциях в IT, но квантовые вычисления - это тот случай, когда революция действительно происходит прямо у нас на глазах. Последние. . .
Вот в чем сила LM.
Hrethgir 02.07.2025
как на английском будет “обслуживание“ Слово «обслуживание» на английском языке может переводиться несколькими способами в зависимости от контекста: * **Service** — самый распространённый. . .
Использование Keycloak со Spring Boot и интеграция Identity Provider
Javaican 01.07.2025
Два года назад я получил задачу, которая сначала показалась тривиальной: интегрировать корпоративную аутентификацию в микросервисную архитектуру. На тот момент у нас было семь Spring Boot приложений,. . .
Содержание темы с примерами на WebGL
8Observer8 01.07.2025
Все примеры из книги Мацуды и Ли в песочнице JSFiddle Пример выводит точку красного цвета размером 10 пикселей на WebGL 1. 0 и 2. 0 WebGL 1. 0. Передача координаты точки из главной программы в. . .
Основы WebGL. Простой треугольник
8Observer8 01.07.2025
Простой треугольник без трансформаций. Для трансформаций можно использовать glMatrix, как в примере: https:/ / plnkr. co/ edit/ qT6ZTwvncLPRamK5?preview На русском: . . .
Полиглотные микросервисы на C# и .NET
ArchitectMsa 30.06.2025
Полиглотная архитектура появилась не из желания усложнить жизнь разработчикам. Она родилась из практической необходимости решать разные задачи наиболее эффективным способом. В одном из проектов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »