小编Ans*_*mar的帖子

ListView中没有更新

我创建了一个派生自QAbstractListModel并重新实现所有必要功能的类.我创建了一个对象,将一些初始数据填入模型(所有beginInsertRows等完成),然后将它(对象)传递给qml via setContextProperty.我正在使用QQuickView.一旦qml被show()命令显示,我产生一个QThread我使用Model对象的指针.线程通过直接调用Model的addData(..)函数(具有beginInsertRowsetc)继续向模型添加数据.

问题:没有UI的更新.我在QtCreator的"应用程序输出"窗格中列出了以下内容:

QObject::connect: Cannot queue arguments of type 'QQmlChangeSet'
(Make sure 'QQmlChangeSet' is registered using qRegisterMetaType().)
Run Code Online (Sandbox Code Playgroud)

这里的表格显示了完全相同的问题,但我不能使用那里提到的信号和插槽.

编辑:

从主线程运行addData()(使用链接中提到的信号槽但不是子类QThread)确实将ListView更新为初始数据,但是在dataChanged()信号之后视图没有更新.让我更清楚地解释一下.

/*This is the class in which data is stored*/
class ClientCardModel : public QAbstractListModel {
    ....
    QList<ClientCard*> m_list;
};

...
ClientCardModel hand;    // object to send to qml

...     
 // New worker thread created and all the following codes are exexuted in that …
Run Code Online (Sandbox Code Playgroud)

qt listview qthread qtquick2

7
推荐指数
1
解决办法
2784
查看次数

loc和iloc的类型是什么?(括号与括号)

我来自C++背景,最近开始学习python.我正在研究索引和选择数据.我碰到.iloc[]的类Series,DataFramePanel在大熊猫库.我无法理解是什么.iloc?是功能还是属性?很多次我错误地使用()[]不是得到实际结果(但它不会给我一个错误).

例:

In [43]: s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype='int64')

In [44]: s[s.index.isin([2, 4, 6])]
Out[44]: 
4    0
2    2
dtype: int64

In [45]: s.iloc(s.index.isin([2,4,6]))
Out[45]: <pandas.core.indexing._iLocIndexer at 0x7f1e68d53978>

In [46]: s.iloc[s.index.isin([2,4,6])]
Out[46]: 
4    0
2    2
dtype: int64
Run Code Online (Sandbox Code Playgroud)

谁能告诉我在哪里学习更多关于这类运营商的信息.

python pandas

6
推荐指数
2
解决办法
1215
查看次数

将张量流中的相似值分组

我想将类似的张量组合在一起。例如:

input: [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]
output: [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用unique_with_countssplit功能,但出现错误。这是我的代码:

import tensorflow as tf

value = tf.constant([1,2,2,3,3,3,4,4,4,4,5,5,5,5,5])
y, idx, count = tf.unique_with_counts(value)
splitted = tf.split(value, count, 0)

with tf.compat.v1.Session() as sess:
    print(sess.run(splitted))
Run Code Online (Sandbox Code Playgroud)

以下是错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-161-aba9fdba9ef6> in <module>
      1 value = tf.constant([1,2,2,3,3,3,4,4,4,4,5,5,5,5,5])
      2 y, idx, count = tf.unique_with_counts(value)
----> 3 splitted = tf.split(value, count, 0)
      4 
      5 with tf.compat.v1.Session() as sess:

/usr/local/lib/python3.7/site-packages/tensorflow/python/ops/array_ops.py in split(value, num_or_size_splits, axis, num, name)
   1513       num = size_splits_shape[0]
   1514     if num …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

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

从ListView中选择多个项目

我想从中选择多个项目ListView。在C++我会做这样的事情

if (clicked_card->is_selected) {
    clicked_card->is_selected = false;
    int i = 0;
    while(selected_cards[i] != clicked_card) i++;
    selected_cards.erase(selected_cards.begin() + i);
} else {
    clicked_card->is_selected = true;
    selected_cards.push_back(clicked_card);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码使用指针进行比较。那么如何在这样的选择QML。我想出的解决方案是这样的

卡号

Image {
    id: delegate
    property bool isSelected: false
    ...
    MouseArea {
        onClicked: {
            if(isSelected === true) {
                isSelected = false;
                gameScene.deselectCard(selectSeq);
            }
            else {
                isSelected = true;
                gameScene.selectCard({'opParam': opParam, 'selectSeq': selectSeq});
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

GameScene.qml

Item {
    id: gameScene
    property var selectedCards: []

    signal selectCard(variant …
Run Code Online (Sandbox Code Playgroud)

qt qml

4
推荐指数
2
解决办法
2602
查看次数

标签 统计

python ×2

qt ×2

listview ×1

pandas ×1

qml ×1

qthread ×1

qtquick2 ×1

tensorflow ×1