小编hus*_*hus的帖子

长按后拖动

我想在长按后拖动我的自定义按钮 QML。我已经实现了这种行为,但是问题是在启用后drag,我需要再次按下按钮才能真正开始拖动。如果我想在长按后不松开而移动按钮,我应该如何实现这种机制?

这是我的按钮代码(onReleased并且onLongPressed是我自己的信号):

ButtonWidget.SoftButtonUI
{
    id:softButtonDelegate2
    x:500
    y:300
    labelText: "button"
    iconImageSource: path
    isGrayedOut: false

    Drag.active: dragArea2.drag.active
    Drag.hotSpot.x: 10
    Drag.hotSpot.y: 10
    onReleased:
    {
        console.log("onClicked")
    }

    onLongPressed:
    {
        console.log("onLongPressed")
        dragArea2.enabled = true
    }

    MouseArea {
        id: dragArea2
        enabled: false
        anchors.fill: parent
        drag.target: parent
        onReleased: parent.Drag.drop()
        onClicked: {
            console.log("MouseArea onClicked")
        }
        onPressAndHold: {
            console.log("MouseArea  onPressAndHold")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何的想法?

qt drag qml qtquick2

5
推荐指数
1
解决办法
2121
查看次数

自定义listModel不通知视图

我有我的自定义列表模型,我放置了应该在QML视图上显示的数据.但由于某种原因,QML中的视图有时会正常更新,有时会使用以前的数据,有时不会执行更新.

这是我填充模型的函数 - 从其他一些线程调用此函数.

void MyScreen::fillListModel()
{
    const QString SEPARATOR = " ";   
    myListModel->resetModel();

    for (int i = 0; i < MAX_ROWS; ++i)
    {
        QString key = QString::fromUtf16(MyData::getParameterKey(i).c_str());
        QString val = QString::fromUtf16(MyData::getParameterVal(i).c_str());       
        myListModel->addItem(key + SEPARATOR + val);
    }
}
Run Code Online (Sandbox Code Playgroud)

模型重置的实现:

void BrowsingModelBase::resetModel()
{
    beginResetModel();
    m_items.clear();
    endResetModel();
}
Run Code Online (Sandbox Code Playgroud)

执行addItem():

void BrowsingModelBase::addItem(const BrowsingItemModelBase &item)
{
    int count = m_items.size();
    beginInsertRows(QModelIndex(), count, count);
    m_items.append(item);
    endInsertRows();
}
Run Code Online (Sandbox Code Playgroud)

最后我的QML文件:

MyScreen {

    Column {
        id: myFlowList
        y: 110
        x: 220

        ListView {
            height:1000
            spacing: …
Run Code Online (Sandbox Code Playgroud)

qt qml qtquick2

2
推荐指数
1
解决办法
1106
查看次数

标签 统计

qml ×2

qt ×2

qtquick2 ×2

drag ×1