Для обновления связанных с моделью представлений необходимо использовать beginInsertRows() endInsertRows() во время добавления данных.
А в конце еще выпустить сигнал dataChanged().
Более подробно тут.
Ярлыки
- С++ (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)
четверг, 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();
}
Более подробно тут, тут, тут и тут.
вторник, 13 марта 2018 г.
QBS - прописать define
Для прописывания define в QBS есть модуль cpp, в который можно прописать необходимые дефайны разделенные запятой.
Более подробно тут.
cpp.defines: ["CONFIG__H","QML_VER"]
Более подробно тут.
вторник, 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
Более подробно тут и тут.
Подписаться на:
Сообщения (Atom)