Я использую TextArea
для отображения многострочного текста со встроенными тегами <IMG ...>
в делегате для ListView
.У меня он установлен только для чтения (и не отключен), потому что мне нужно, чтобы гиперссылки в тексте были кликабельными, поэтому мне нужно использовать его обработчик событий onLinkActivated
.Обычно это то, что вызывает Label
(который не обрабатывает события колеса мыши), но Label
неправильно отображает разрывы строк, когда текст включает в себя теги <IMG ...>
в HTML.
Проблема, с которой я столкнулся, заключается в том, что TextArea
обрабатывает события колеса мыши, даже когда оно доступно только для чтения, поэтому, если курсор окажется над одним из видимых элементов управления TextArea
, ListView
не будет отвечатьк событиям колесика мыши (и поэтому он не прокручивается).Другими словами, TextArea
захватывает события колесика мыши, и я хочу, чтобы он этого не делал.
Я вижу в документах, что элементы управления имеют свойство wheelEnabled:
, но TextArea
не кажетсядля поддержки этого.
Обновление: Вот минимальный пример кода, который демонстрирует проблему:
import QtQuick.Controls 1.4 as Controls
Rectangle {
id: test
color: "white"
width: 300
anchors {
left: parent.left
top: parent.top
bottom: parent.bottom
}
Controls.ScrollView {
id: _scrollview
anchors.fill: parent
ListView {
anchors.fill: parent
model: 100
delegate: Rectangle {
id: tableRow
width: test.width
height: 50
color: "yellow"
TextArea {
width: test.width / 2
height: tableRow.height
readOnly: true
text: "Row # " + index
}
}
}
}
}
Если вы удерживаете курсор мыши над правой стороной этогоlistview (т.е. не над элементом управления TextArea
в строке), колесо мыши работает как положено.Но если вы удерживаете курсор мыши над TextArea
в любой из строк, ListView
не будет прокручиваться колесом мыши (поскольку readOnly TextView
захватывает события).