我是Qt的新手,并且已经把头发拉了好几个小时才能做到这一点。我找到了一些与该主题相关的例子,但我并不完全理解。
我需要使用我创建的类填充ListView。我想我需要使用一个委托,但我看到的ListView委托的任何例子都是用C ++中的列表制作的,所以我不知道如何在qml中引用该列表,或者它们不是非常详细。我对一个简单的委托如何工作有一个大概的了解,但我不知道或不了解如何使用ListView实现一个委托。
我很确定我想要设置为我的模型的类需要从QAbstractListModel继承,但是除此之外,我已经丢失了。
main.qml
import QtQuick 2.7
import QtQuick.Window 2.0
import QtLocation 5.6
import QtQuick.Controls 1.4
Window {
id: main_window
...
Column {
id: column
...
}
}
Column {
id: column1
....
Row {
id: row
....
}
Row {
id: row1
....
TableView {
id:data_table
objectName: data_table
TableViewColumn {
role: "ip"
title: "Source IP"
}
TableViewColumn {
role: "type"
title: "Attack Type"
}
TableViewColumn {
role: "rate"
title: "Rate (P/sec)"
}
TableViewColumn {
role: "city"
title: "City"
}
TableViewColumn {
role: "country"
title: "County"
width: row1.width * 0.125
}
TableViewColumn {
role: "isp"
title: "ISP"
}
model: list_model
}
}
}
的main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <source_data.h>
int main(int argc, char *argv[])
{
QList<QObject> model;
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
source_data.h
#include <QString>
#include <QAbstractListModel>
class Source_Data : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(QString ip READ ip WRITE setIp)
Q_PROPERTY(QString type READ type WRITE setType)
Q_PROPERTY(QString rate READ rate WRITE setRate)
Q_PROPERTY(QString city READ city WRITE setCity)
Q_PROPERTY(QString country READ country WRITE setCountry)
Q_PROPERTY(QString isp READ isp WRITE setIsp)
public:
QString ip() const;
QString type() const;
QString rate() const;
QString city() const;
QString country() const;
QString isp() const;
void setIp(const QString & ip);
void setType(const QString & type);
void setRate(const QString & rate);
void setCity(const QString & city);
void setCountry(const QString & country);
void setIsp(const QString & isp);
private:
QString m_ip;
QString m_type;
QString m_rate;
QString m_city;
QString m_country;
QString m_isp;
};