Compare commits

..

No commits in common. "ecd13a9cca59c18096b938a0731fb95fb3519d52" and "f701f9775659ed43b96338cbcc82186c8c06b37f" have entirely different histories.

10 changed files with 101 additions and 54 deletions

View File

@ -2394,25 +2394,25 @@ Some contents...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_TreeView.qml" line="185"/> <location filename="qml/page/T_TreeView.qml" line="230"/>
<source>Title</source> <source>Title</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_TreeView.qml" line="189"/> <location filename="qml/page/T_TreeView.qml" line="238"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_TreeView.qml" line="193"/>
<source>Avatar</source> <source>Avatar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_TreeView.qml" line="197"/> <location filename="qml/page/T_TreeView.qml" line="242"/>
<source>Address</source> <source>Address</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="qml/page/T_TreeView.qml" line="234"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>T_Typography</name> <name>T_Typography</name>

View File

@ -2504,22 +2504,22 @@ Some contents...</source>
<translation type="obsolete">%1</translation> <translation type="obsolete">%1</translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_TreeView.qml" line="185"/> <location filename="qml/page/T_TreeView.qml" line="230"/>
<source>Title</source> <source>Title</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_TreeView.qml" line="197"/> <location filename="qml/page/T_TreeView.qml" line="242"/>
<source>Address</source> <source>Address</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_TreeView.qml" line="193"/> <location filename="qml/page/T_TreeView.qml" line="238"/>
<source>Avatar</source> <source>Avatar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_TreeView.qml" line="189"/> <location filename="qml/page/T_TreeView.qml" line="234"/>
<source>Name</source> <source>Name</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -10,6 +10,7 @@ FluContentPage {
title: qsTr("TreeView") title: qsTr("TreeView")
function treeData(){ function treeData(){
const names = ["孙悟空", "猪八戒", "沙和尚", "唐僧","白骨夫人","金角大王","熊山君","黄风怪","银角大王"] const names = ["孙悟空", "猪八戒", "沙和尚", "唐僧","白骨夫人","金角大王","熊山君","黄风怪","银角大王"]
function getRandomName(){ function getRandomName(){
@ -28,7 +29,7 @@ FluContentPage {
} }
const dig = (path = '0', level = 5) => { const dig = (path = '0', level = 5) => {
const list = []; const list = [];
for (let i = 0; i < 4; i += 1) { for (let i = 0; i < 5; i += 1) {
const key = `${path}-${i}`; const key = `${path}-${i}`;
const treeNode = { const treeNode = {
title: key, title: key,
@ -47,6 +48,67 @@ FluContentPage {
return dig(); return dig();
} }
// Row{
// id: layout_column
// spacing: 12
// width: 340
// anchors{
// top:parent.top
// left: parent.left
// leftMargin: 10
// bottom:parent.bottom
// bottomMargin: 20
// }
// RowLayout{
// spacing: 10
// FluText{
// text: "cellHeight:"
// Layout.alignment: Qt.AlignVCenter
// }
// FluSlider{
// id: slider_cell_height
// value: 30
// from: 30
// to:100
// }
// }
// RowLayout{
// spacing: 10
// FluText{
// text: "depthPadding:"
// Layout.alignment: Qt.AlignVCenter
// }
// FluSlider{
// id: slider_depth_padding
// value: 15
// from: 15
// to:100
// }
// }
// FluToggleSwitch{
// id: switch_showline
// text:"showLine"
// checked: false
// }
// FluToggleSwitch{
// id: switch_checkable
// text:"checkable"
// checked: false
// }
// FluButton{
// text: "all expand"
// onClicked: {
// tree_view.allExpand()
// }
// }
// FluButton{
// text: "all collapse"
// onClicked: {
// tree_view.allCollapse()
// }
// }
// }
Component{ Component{
id:com_avatar id:com_avatar
Item{ Item{
@ -144,21 +206,7 @@ FluContentPage {
} }
} }
} }
FluButton{
text: "print selection model"
onClicked: {
var printData = []
var data = tree_view.selectionModel();
console.debug(data.length)
for(var i = 0; i <= data.length-1 ; i++){
const newObj = Object.assign({}, data[i].data);
delete newObj["__parent"];
delete newObj["children"];
printData.push(newObj)
}
console.debug(JSON.stringify(printData))
}
}
} }
} }
@ -177,9 +225,6 @@ FluContentPage {
showLine: switch_showline.checked showLine: switch_showline.checked
checkable:switch_checkable.checked checkable:switch_checkable.checked
depthPadding: slider_depth_padding.value depthPadding: slider_depth_padding.value
onCurrentChanged: {
showInfo(current.data.title)
}
columnSource:[ columnSource:[
{ {
title: qsTr("Title"), title: qsTr("Title"),

View File

@ -161,12 +161,19 @@ void FluFrameless::componentComplete() {
if (!isCompositionEnabled()) { if (!isCompositionEnabled()) {
offsetSize = 0; offsetSize = 0;
} }
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
if (!isMaximum) { if (!isMaximum) {
clientRect->top = originalTop + offsetSize; clientRect->top = originalTop + offsetSize;
clientRect->bottom = originalBottom; clientRect->bottom = originalBottom;
clientRect->left = originalLeft; clientRect->left = originalLeft;
clientRect->right = originalRight; clientRect->right = originalRight;
} }
#else
clientRect->top = originalTop + offsetSize;
clientRect->bottom = originalBottom;
clientRect->left = originalLeft;
clientRect->right = originalRight;
#endif
_setMaximizeHovered(false); _setMaximizeHovered(false);
*result = WVR_REDRAW; *result = WVR_REDRAW;
return true; return true;

View File

@ -113,7 +113,15 @@ void FluTreeModel::checkRow(int row, bool checked) {
itemData->_checked = checked; itemData->_checked = checked;
} }
Q_EMIT dataChanged(index(0, 0), index(rowCount() - 1, 0)); Q_EMIT dataChanged(index(0, 0), index(rowCount() - 1, 0));
QList<FluTreeNode *> data;
foreach (auto item, _dataSource) {
if (!item->hasChildren()) {
if (item->_checked) {
data.append(item);
}
}
}
selectionModel(data);
} }
void FluTreeModel::setDataSource(QList<QMap<QString, QVariant>> data) { void FluTreeModel::setDataSource(QList<QMap<QString, QVariant>> data) {
@ -264,13 +272,3 @@ void FluTreeModel::allCollapse() {
_rows = _root->_children; _rows = _root->_children;
endResetModel(); endResetModel();
} }
QVariant FluTreeModel::selectionModel(){
QList<FluTreeNode *> data;
foreach (auto item, _dataSource) {
if (item->checked()) {
data.append(item);
}
}
return QVariant::fromValue(data);
}

View File

@ -89,6 +89,7 @@ public:
class FluTreeModel : public QAbstractItemModel { class FluTreeModel : public QAbstractItemModel {
Q_OBJECT Q_OBJECT
Q_PROPERTY_AUTO(int, dataSourceSize) Q_PROPERTY_AUTO(int, dataSourceSize)
Q_PROPERTY_AUTO(QList<FluTreeNode *>, selectionModel)
Q_PROPERTY_AUTO(QList<QVariantMap>, columnSource) Q_PROPERTY_AUTO(QList<QVariantMap>, columnSource)
QML_NAMED_ELEMENT(FluTreeModel) QML_NAMED_ELEMENT(FluTreeModel)
QML_ADDED_IN_MINOR_VERSION(1) QML_ADDED_IN_MINOR_VERSION(1)
@ -140,8 +141,6 @@ public:
Q_INVOKABLE void allCollapse(); Q_INVOKABLE void allCollapse();
Q_INVOKABLE QVariant selectionModel();
private: private:
QList<FluTreeNode *> _rows; QList<FluTreeNode *> _rows;
QList<FluTreeNode *> _dataSource; QList<FluTreeNode *> _dataSource;

View File

@ -80,7 +80,6 @@ FluButton {
id:container id:container
width: 300 width: 300
height: 360 height: 360
radius: 4
color: FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(248/255,250/255,253/255,1) color: FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(248/255,250/255,253/255,1)
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
@ -614,7 +613,7 @@ FluButton {
} }
background: Item{ background: Item{
FluShadow{ FluShadow{
radius: 4 radius: 5
} }
} }
function showPopup() { function showPopup() {

View File

@ -710,6 +710,9 @@ Rectangle {
} }
} }
} }
function selectionModel(){
return tree_model.selectionModel
}
function count(){ function count(){
return tree_model.dataSourceSize return tree_model.dataSourceSize
} }
@ -738,7 +741,4 @@ Rectangle {
d.editPosition = undefined d.editPosition = undefined
d.editDelegate = undefined d.editDelegate = undefined
} }
function selectionModel(){
return tree_model.selectionModel()
}
} }

View File

@ -79,7 +79,6 @@ FluButton {
id:container id:container
width: 300 width: 300
height: 360 height: 360
radius: 4
color: FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(248/255,250/255,253/255,1) color: FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(248/255,250/255,253/255,1)
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
@ -613,7 +612,7 @@ FluButton {
} }
background: Item{ background: Item{
FluShadow{ FluShadow{
radius: 4 radius: 5
} }
} }
function showPopup() { function showPopup() {

View File

@ -710,6 +710,9 @@ Rectangle {
} }
} }
} }
function selectionModel(){
return tree_model.selectionModel
}
function count(){ function count(){
return tree_model.dataSourceSize return tree_model.dataSourceSize
} }
@ -738,7 +741,4 @@ Rectangle {
d.editPosition = undefined d.editPosition = undefined
d.editDelegate = undefined d.editDelegate = undefined
} }
function selectionModel(){
return tree_model.selectionModel()
}
} }