标签: qstringlistmodel

pyqt中GUI的模型视图实现出错

关闭应用程序时,以下示例代码与此错误崩溃:

QBasicTimer::start: QBasicTimer can only be used with threads started with QThread
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import sys
from PyQt4 import QtGui ,QtCore

app = QtGui.QApplication(sys.argv)

data=[]
data.append("one")
model=QtGui.QStringListModel(data)

combobox=QtGui.QComboBox()
combobox.show()
combobox.setModel(model)

sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

我发现这是关于使用模型,但我不知道如何解决它.

编辑:os:win 7 64bit pyqt4

python user-interface pyqt qcombobox qstringlistmodel

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

如何使用 QStringListModel 在 QListView 中添加图标?

是否可以使用 QStringListModel 将图标添加到 ListView ?

这就是我正在做的。

QStringListModel* model;
QStringList List;
model->setStringList(List);
ui->listView->setModel(model);
...

model->setData(index, "Test");
model->setData(index,QIcon(":/icon.png"),Qt::DecorationRole);
Run Code Online (Sandbox Code Playgroud)

不幸的是,该图标没有出现在列表中。

如何将图标添加到列表中?

c++ qt qlistview qstringlistmodel

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

如何将 C++ 中的 QStringList 显示到 QML ListView

所以我是 Qt 的新手,我正在努力提高我的 C++ 技能,所以我决定开始一个项目,在那里我可以使用文本字段搜索 QStringList 中的项目。我使搜索功能正常工作,并且能够将搜索结果移动到另一个QStringList,在那里我可以使用它在声明为“公共插槽”的函数中向用户显示。

主要想法是,一旦用户在文本字段中输入字符,列表就会自动更新,它已经这样做了。所以我设法将结果列表放入 Slot 函数中,以便每次在文本字段中输入字符时都能显示不同的列表。


在我传入搜索结果列表的函数中,我试图使用它

m_context->setContextProperty("resultModel",QVariant::fromValue(m_resultList));
Run Code Online (Sandbox Code Playgroud)

哪里resultModel是我的模型在 QML 中的名称,m_resultList是存储搜索结果的位置,以在ListView. 我的程序可以编译,但运行后崩溃了。

所以,我真正的问题是:有什么方法可以将不在 main.cpp 中的 C++ QStringList 显示到 QML ListView 中?

我要求它不在 main 中的原因是因为我试图在 main.cpp 中使用上面的同一行硬编码QStringList并且列表能够显示,所以它一定有问题不在主要。也因为我无法使用插槽功能SearchClass来自动更新。


主程序

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QDebug>
#include "searchclass.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    qmlRegisterType<SearchClass>("b9c.backend", 1, 0, "BackEnd");

    QQmlApplicationEngine engine;

    SearchClass obj;

    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    QQmlContext *context = engine.rootContext();

    obj.getContext(context);

    //the line below works …
Run Code Online (Sandbox Code Playgroud)

c++ qt listview qml qstringlistmodel

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