Если необходимо в ts файле перевода добавить перенос строки, то \n обычно не срабатывает.
Тогда необходимо при редактировании ts файла нажать Enter.
Additional info here.
Ярлыки
- С++ (3)
- Стихи (1)
- тонировка (1)
- Цитаты (2)
- ALTlinux (1)
- Apache (2)
- big-endian (1)
- Blogger (1)
- books (3)
- books links (1)
- Buisness (10)
- C (1)
- C# (5)
- c++ (27)
- car (8)
- Cheat (1)
- CSS (1)
- DLL (1)
- Draw (1)
- Eclipse (2)
- Films (1)
- Firefox (4)
- Flash (1)
- GTK (2)
- GUI (1)
- Home server (1)
- Hotels (1)
- HTML (6)
- IE (1)
- Internet (2)
- Java (1)
- JavaScript (6)
- jQuery (1)
- KDE (1)
- KeeTouch (1)
- Linux (34)
- little-endian (1)
- Makefile (1)
- MFC (6)
- multi-thread (2)
- Music (1)
- ODBC (2)
- OpenBox (2)
- photo (4)
- PHP (38)
- programing (2)
- proxy (1)
- QML (37)
- Qt (41)
- QtCreator (2)
- RegExp (3)
- Shopping (12)
- shutdown (1)
- Soft (1)
- Sound Card (1)
- SQL (1)
- SQL Server (14)
- Subversion (1)
- SVN (1)
- teach (4)
- text-editor (1)
- Travels (1)
- Ubuntu (38)
- Upstart (1)
- Vi (2)
- VirtualBox (2)
- Virtualization (1)
- vkontakte.ru (1)
- Web (2)
- Web-Kit (5)
- WinAPI (7)
- Windows (4)
Показаны сообщения с ярлыком QML. Показать все сообщения
Показаны сообщения с ярлыком QML. Показать все сообщения
вторник, 9 октября 2018 г.
четверг, 27 сентября 2018 г.
QML - set default font
If you want set font for all items in ApplicationWindow.
In main.cpp you must configure QFont and set it to QApplication.
Additional info here.
QApplication app(argc, argv);
QFont font;
font.setPixelSize(20);
app.setFont(font);
}
Additional info here.
QML - SystemPalette visible in all files
If you want use system colors create static variable in special singleton object.
And then use it.
Additional info here.
// Style.qml
pragma Singleton
import QtQuick 2.11
QtObject {
property SystemPalette palette: SystemPalette { colorGroup: SystemPalette.Active }
}
And then use it.
import QtQuick 2.0
Rectangle {
color: Style.palette.highlight
}
Additional info here.
понедельник, 16 июля 2018 г.
QML - nested ListView
Example of using DelegateModel for hierarchical tree of data.
Additional info here.
import QtQuick 2.0
import QtQuick.Controls 2.2
import QtQml.Models 2.3
ListView {
id: view
anchors.fill: parent
focus: true
highlight: Rectangle {
width: view.width; height: view.currentItem.height
y: view.currentItem.y
color: "blue"
}
highlightFollowsCurrentItem: true
model: DelegateModel {
model: catalogTreeModel //common QAbstractItemModel model
delegate: Item {
width: view.width; height: colDlg.height
Column {
id: colDlg
width: view.width
height: itemDlg.height + subView.height
Item {
id: itemDlg
width: view.width
height: childrenRect.height
Text { text: session }
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
onClicked: {
view.currentIndex = index
subView.shown = !subView.shown
} //onClicked:
} //MouseArea
} //Item
ListView { // nested ListView
id: subView
property int parentIndex: index
property bool isParrentSelected: view.currentIndex===index
property bool shown: false
width: view.width; height: shown ? /*_rowsCount * 25*/ subView.count * 25 : 0
visible: shown
enabled: shown
highlight: Rectangle {
id: subHighlight
visible: subView.isParrentSelected
focus: true
color: "red"
} //highlight:
model: DelegateModel {
model: catalogTreeModel
rootIndex: view.model.modelIndex(subView.parentIndex) // change root index for nested branch
delegate: Item {
width: view.width; height: txt.contentHeight
Text { id: txt; text: session }
MouseArea {
anchors.fill: parent
z: 1
hoverEnabled: true
propagateComposedEvents: true
onClicked: {
subView.currentIndex = index
view.currentIndex = subView.parentIndex
} //onClicked:
} //MouseArea
} //delegate:
} //model
} //ListView
} //Column
} //delegate:
} //model:
} //ListView
Additional info here.
понедельник, 2 апреля 2018 г.
QQuickItem добавить дочерний элемент
Если необходимо чтобы один элемент рисовал поверх другого, то его необходимо сделать потомком.
Это можно сделать передав родительский QQuickItem в конструктор потомка или вызвав метод setParentItem(parent) в потомке.
Более подробно тут.
Более подробно тут.
четверг, 29 марта 2018 г.
QML - TreeView скроллинг к текущему элементу
Если размер содержимого превышает размер TableView необходимо проскроллировать до текущего элемента.
Для этого необходимо использовать скрытую переменную __listView.
Более подробно тут.
__listView.positionViewAtIndex(row, mode)
Более подробно тут.
QML - ListView прокрутить до выбранного значения
Если содержимое ListView превышает его размеры, то возможно понадобится программно совершить прокрутку до выделенного элемента, для этого используется positionViewAtIndex
Более подробно тут.
ListView {
id: listView
onCurrentIndexChanged: {
positionViewAtIndex(currentIndex, ListView.Visible)
}
}
Более подробно тут.
QML - TreeView выделить строку программно
Если есть необходимость выделить строку из JavaScript необходимо использовать selection.setCurrentIndex.
Более подробно тут и тут.
import QtQml.Models 2.2
TreeView {
id: viewPerSe
selection: ItemSelectionModel {
model: viewPerSe.model
}
}
function select (idx) {
viewPerSe.selection.setCurrentIndex(idx, ItemSelectionModel.ClearAndSelect)
}
Более подробно тут и тут.
понедельник, 19 марта 2018 г.
QML - TableViewColumn delegate вывести значение роли
четверг, 15 марта 2018 г.
QML - перенаправить вывод в свой C++ обработчик
Если есть необходимость использовать например свой логгер.
Если это делать на стороне QML то могут возникнуть сложности с получением контекста, который хранит информацию о файле и строке.
По аналогии с макросами __LINE__ __FILE__ в C++.
Единственный найденный вариант это подменить обработчик сообщений методом qInstallMessageHandler().
Более подробно тут, тут, тут и тут.
#include
#include
#include
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QByteArray localMsg = msg.toLocal8Bit();
switch (type) {
case QtDebugMsg:
fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtInfoMsg:
fprintf(stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtWarningMsg:
fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
abort();
}
}
int main(int argc, char **argv)
{
qInstallMessageHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
}
Более подробно тут, тут, тут и тут.
вторник, 6 марта 2018 г.
QML - Button сделать нажатой
Если необходимо после нажатия на Button оставить ее в нажатом состоянии.
Можно установить свойство down в true.
Более подробно тут.
Button {
id: but
text: qsTr("Text")
width: implicitWidth
height: implicitHeight
onClicked: {
down = true // button is visually down
checked = true // button is checked
}
}
Более подробно тут.
понедельник, 5 марта 2018 г.
QML - vertical TabBar
Если необходимо повернуть панель вертикально, то могут быть сложности с привязкой к соседним элементам.
Т.к. похоже размеры повернутого элемента не пересчитываются и соседний элемент находится на расстоянии как будто панель не повернута.
Для этого панель необходимо положить на элемент у которого размеры заданны заранее и тогда у соседнего элемента привязки будут рассчитаны корректно.
Более подробно тут.
import QtQuick 2.0
Item { //base component
id: baseBar
width: but1.height // width as TabBar height before rotation
height: parent.height
TabBar {
id: modeBar1
width: parent.height
height: but1.height
transform: [
Rotation { origin.x: 0; origin.y: 0; angle: -90} // rotate around the upper left corner counterclockwise
,Translate { y: baseBar.height; x: 0 } // move to the bottom of the base
]
TabButton {
id: but1
text: qsTr("Button1")
}
TabButton {
text: qsTr("Button2")
} //TabBar
} //Item
Более подробно тут.
пятница, 2 марта 2018 г.
QML - ListView highlight не виден
четверг, 1 марта 2018 г.
QML - определить что обьект принадлежит определенному типу
Начиная с Qt 5.10 появилась возможность проверять тип обьекта
Более подробно тут и тут.
import QtQuick 2.0
Item {
// two QML items, used for type checking
Item { id: testItem }
Rectangle { id: testRect }
// function to check wheter an item is a Rectangle
function isRectangle(item) {
return item instanceof Rectangle
}
// type check example
Component.onCompleted: {
console.log("testItem is Rectangle? "+isRectangle(testItem))
console.log("testRect is Rectangle? "+isRectangle(testRect))
}
}
Более подробно тут и тут.
QML - ListView перемещение области просмотра вслед за курсором
Если по каким-то причинам, при листании клавишами, курсор уходит за край вьюпорта, возможно стоит принудительно вызвать функцию positionViewAtIndex()
Более подробно тут и тут.
ListView {
id: list_view
anchors.fill: parent
focus: true //
Keys.onUpPressed: decrementCurrentIndex() //перемещение стрелками
Keys.onDownPressed: incrementCurrentIndex() //перемещение стрелками
model: myModel
onCurrentIndexChanged: {
positionViewAtIndex(currentIndex, ListView.Visible)
}
} //ListView
Более подробно тут и тут.
среда, 28 февраля 2018 г.
QML - ListView включить обработку нажатия клавиш
Для включения обработки нажатия клавиш необходимо добавить соответствующий обработчик, например Keys.onUpPressed.
И если этого оказалось недостаточно в событии onCompleted вызвать функцию forceActiveFocus().
Эта функция обходит дерево всех FocusScope и устанавливает focus: true а для последнего activeFocus: true.
Так как только в такой конфигурации работают обработчики нажатия клавиш.
Более подробно тут и тут.
ListView {
id: list_view
anchors.fill: parent
focus: true //
Keys.onUpPressed: decrementCurrentIndex() //перемещение стрелками
Keys.onDownPressed: incrementCurrentIndex() //перемещение стрелками
model: myModel
Component.onCompleted: {
forceActiveFocus(); //необходимо для обработки нажатия клавиш
console.log("listView activeFocus: "+activeFocus)
}
} //ListView
Более подробно тут и тут.
среда, 21 февраля 2018 г.
QML - ListView удалить пропуски если делегат содержит пустое значение
Может создастся ситуация, когда модель возвращает пустое(NULL) значение.
И в ListView появляются пустые строки.
Для того, чтобы их скрыть необходимо в делегате установить параметры visible и enabled в false.
Более подробно тут.
ListView {
anchors.fill: parent
delegate: Rectangle {
width: model.vis ? 100 : 0
height: model.vis ? 62 : 0
visible: model.vis
enabled: model.vis
Rectangle {
anchors.fill: parent
color: model.rectcolor
}
}
model: ListModel {
ListElement {
rectcolor: "red"
vis:true
}
ListElement {
rectcolor: "green"
vis:false
}
ListElement {
rectcolor: "brown"
vis:true
}
}
}
Более подробно тут.
вторник, 20 февраля 2018 г.
QML - динамическое связывание свойств
Механизм property binding не распространяется на свойства, которые получают свои значения из JavaScript функций. Для того, чтобы заработал property binding, надо обернуть JavScript-функцию конструкцией Qt.binding( ... )
Более подробно тут и тут.
Keys.onSpacePressed: {
height = Qt.binding(function() { return width * 3 })
}
Более подробно тут и тут.
QML - ListView сворачивать/разворачивать секции
Для этого необходимо создать свои сигнал и слот, через коннект которых передавать выбранную секцию.
Более подробно тут и тут.
Rectangle {
id: container
width: 300
height: 360
ListModel {
id: animalsModel
ListElement { name: "Ant"; size: "Tiny" }
ListElement { name: "Flea"; size: "Tiny" }
ListElement { name: "Parrot"; size: "Small" }
ListElement { name: "Guinea pig"; size: "Small" }
ListElement { name: "Rat"; size: "Small" }
ListElement { name: "Butterfly"; size: "Small" }
ListElement { name: "Dog"; size: "Medium" }
ListElement { name: "Cat"; size: "Medium" }
ListElement { name: "Pony"; size: "Medium" }
ListElement { name: "Koala"; size: "Medium" }
ListElement { name: "Horse"; size: "Large" }
ListElement { name: "Tiger"; size: "Large" }
ListElement { name: "Giraffe"; size: "Large" }
ListElement { name: "Elephant"; size: "Huge" }
ListElement { name: "Whale"; size: "Huge" }
}
// The delegate for each section header
Component {
id: sectionHeading
Rectangle {
id: sectionHeadingRectangle
width: container.width
height: childrenRect.height
color: "lightsteelblue"
Text {
text: section
font.bold: true
font.pixelSize: 20;
}
MouseArea {
anchors.fill: parent
onClicked: view.sectionClicked(section)
}
}
}
Component {
id: section
Rectangle {
id: rect
width: container.width
height: shown ? mainText.height : 0
visible: shown
property bool shown: true
Text { id: mainText; text: name; font.pixelSize: 18 }
Connections {
target: rect.ListView.view
onSectionClicked: if (rect.ListView.section === name) shown = !shown;
}
}
}
ListView {
id: view
anchors.fill: parent
// width: parent.width
signal sectionClicked(string name)
model: animalsModel
delegate: section
section.property: "size"
section.criteria: ViewSection.FullString
section.delegate: sectionHeading
}
}
Более подробно тут и тут.
четверг, 15 февраля 2018 г.
QML - ListView получить индекс выбранной строки
Подписаться на:
Сообщения (Atom)