NoteList
parent
60ae1cf7e9
commit
fef9e15030
|
@ -0,0 +1,78 @@
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import FluentUI
|
||||||
|
import "qrc:///AicsKnowledgeBase/qml/global"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
anchors.fill: parent
|
||||||
|
signal open(string note)
|
||||||
|
ListView {
|
||||||
|
id: listView
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 8
|
||||||
|
header: noteListItemHeader
|
||||||
|
model: noteListModel
|
||||||
|
delegate: noteListItemDelegate
|
||||||
|
}
|
||||||
|
Component {
|
||||||
|
id: noteListItemHeader
|
||||||
|
Item {
|
||||||
|
id: noteListItemHeaderItem
|
||||||
|
// width: ListView.view.width
|
||||||
|
// height: 48
|
||||||
|
// FluText {
|
||||||
|
// text: "笔记"
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Component {
|
||||||
|
id: noteListItemDelegate
|
||||||
|
Rectangle {
|
||||||
|
id: noteListItemRect
|
||||||
|
width: ListView.view.width
|
||||||
|
height: 150
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
open(model.uuid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NoteListItem {
|
||||||
|
id: noteListItem
|
||||||
|
uuid: model.uuid
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
title: model.title
|
||||||
|
date: model.date
|
||||||
|
brief: model.brief
|
||||||
|
pageView: model.pageView
|
||||||
|
author: model.author
|
||||||
|
stars: model.stars
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function setListModel(listModel) {
|
||||||
|
listView.model = listModel
|
||||||
|
}
|
||||||
|
ListModel {
|
||||||
|
id: noteListModel
|
||||||
|
ListElement {
|
||||||
|
uuid: "1"
|
||||||
|
title: "超级无敌报错"
|
||||||
|
brief: "file:///D:/academic/2023-qtBig/AicsKnowledgeBase_client/AicsKnowledgeBase/qml/component/NoteList.qml:41:21: Unable to assign [undefined] to QString"
|
||||||
|
author: "admin"
|
||||||
|
pageView: 123
|
||||||
|
stars: 27
|
||||||
|
date: "2022-02-02"
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
uuid: "2"
|
||||||
|
title: "Qt布局"
|
||||||
|
brief: "锚定(anchors)在确定父子组件之间,同级组件之间的相对位置时非常常用,若使用锚定方式确定子组件与父组件之间的位置关系,使用 top,bottom,left,right, topMargin,bottomMargin,leftMargin,rightMargin进行上下左右对齐,以及对齐后的留白距离。若要使子组件在父组件的水平,垂直居中,使用:"
|
||||||
|
author: "超级无敌长的账户名"
|
||||||
|
pageView: 123
|
||||||
|
stars: 27
|
||||||
|
date: "2022-02-02"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,75 +3,58 @@ import FluentUI
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
FluArea {
|
FluArea {
|
||||||
id: fileItem
|
id: noteItem
|
||||||
property string uuid
|
property string uuid
|
||||||
property string title
|
property string title
|
||||||
property string brief
|
property string brief
|
||||||
property string date
|
property string date
|
||||||
property int pageView
|
property int pageView
|
||||||
property var tags: []
|
|
||||||
property var notes: []
|
|
||||||
property int stars
|
property int stars
|
||||||
property var colorList: ["blue", "green", "orange", "red", "yellow", "purple", "pink", "brown", "teal", "cyan", "gray", "darkgray"]
|
property string author
|
||||||
signal tagClicked(string tag)
|
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: row
|
id: row
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.margins: 10
|
anchors.margins: 10
|
||||||
spacing: 10
|
spacing: 10
|
||||||
|
RowLayout {
|
||||||
ColumnLayout {
|
id: titleRow
|
||||||
id: clickable
|
Layout.preferredWidth: parent.width
|
||||||
anchors.fill: parent
|
FluText {
|
||||||
MouseArea {
|
text: title
|
||||||
anchors.fill: parent
|
font.bold: true
|
||||||
onDoubleClicked: {
|
font.pointSize: 15
|
||||||
fileItem.parent.doubleClicked()
|
Layout.alignment: Qt.AlignLeft
|
||||||
}
|
|
||||||
}
|
}
|
||||||
FluText {
|
FluText {
|
||||||
id: title
|
text: author
|
||||||
text: fileItem.title
|
Layout.alignment: Qt.AlignRight
|
||||||
font{
|
|
||||||
pointSize: 12
|
|
||||||
bold: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
FluText {
|
|
||||||
id: brief
|
|
||||||
text: fileItem.brief
|
|
||||||
}
|
|
||||||
RowLayout {
|
|
||||||
id: infoRow
|
|
||||||
visible: !fileItem.isDir
|
|
||||||
FluText {
|
|
||||||
id: date
|
|
||||||
text: fileItem.date
|
|
||||||
}
|
|
||||||
FluText {
|
|
||||||
id: pageView
|
|
||||||
text: fileItem.pageView + "浏览"
|
|
||||||
}
|
|
||||||
FluText {
|
|
||||||
id: stars
|
|
||||||
text: fileItem.stars + "收藏"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
FluText {
|
||||||
|
text: " " + brief
|
||||||
|
Layout.fillWidth: true
|
||||||
|
wrapMode: Text.WrapAnywhere
|
||||||
|
elide: Text.ElideRight
|
||||||
|
maximumLineCount: 3
|
||||||
|
}
|
||||||
RowLayout {
|
RowLayout {
|
||||||
visible: !fileItem.isDir
|
id: bottomRow
|
||||||
Repeater {
|
Layout.preferredWidth: parent.width
|
||||||
model: fileItem.tags
|
FluText {
|
||||||
delegate: FluTextButton {
|
text: date
|
||||||
text: "#" + fileItem.tags[index]
|
color: "#5F5F5F"
|
||||||
normalColor: colorList[index % colorList.length]
|
Layout.alignment: Qt.AlignLeft
|
||||||
font.pixelSize: 12
|
}
|
||||||
Layout.preferredWidth: 50
|
FluText {
|
||||||
onClicked: {
|
text: pageView + " 浏览"
|
||||||
emit: tagClicked(text)
|
color: "#5F5F5F"
|
||||||
}
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
|
FluText {
|
||||||
|
text: stars + " 收藏"
|
||||||
|
color: "#5F5F5F"
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue