first qml prototype
This commit is contained in:
35
quick/quickview.qml
Normal file
35
quick/quickview.qml
Normal file
@@ -0,0 +1,35 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
TableView
|
||||
{
|
||||
id: table
|
||||
anchors.fill: parent
|
||||
columnSpacing: 2
|
||||
rowSpacing: 2
|
||||
model: meinModel // z. B. QStandardItemModel mit 9 Spalten
|
||||
|
||||
delegate: Rectangle
|
||||
{
|
||||
|
||||
required property string display
|
||||
width: 100
|
||||
height: 20
|
||||
border.color: "#ccc"
|
||||
|
||||
Text
|
||||
{
|
||||
anchors.centerIn: parent
|
||||
text: display
|
||||
font.pixelSize: 10
|
||||
}
|
||||
}
|
||||
|
||||
// // Optional: Spaltenbreiten setzen
|
||||
// onModelChanged: {
|
||||
// for (let i = 0; i < model.columns; ++i)
|
||||
// table.setColumnWidth(i, 100)
|
||||
// }
|
||||
}
|
||||
|
@@ -1,8 +0,0 @@
|
||||
Window {
|
||||
id: popup
|
||||
width: 300
|
||||
height: 200
|
||||
visible: true
|
||||
flags: Qt.Dialog | Qt.WindowStaysOnTopHint
|
||||
title: "QML-Fenster"
|
||||
}
|
@@ -107,16 +107,16 @@ namespace XQAppData
|
||||
namedInsert( "icn63Dummy", QStyle::SP_FileDialogToParent );
|
||||
namedInsert( "icn64Dummy", QStyle::SP_ToolBarHorizontalExtensionButton );
|
||||
namedInsert( "icn65Dummy", QStyle::SP_DialogOkButton );
|
||||
namedInsert( "FileIcon", QStyle::SP_FileIcon );
|
||||
namedInsert( "FileIcon", QStyle::SP_FileIcon );
|
||||
namedInsert( "icn67Dummy", QStyle::SP_ToolBarVerticalExtensionButton );
|
||||
namedInsert( "icn68Dummy", QStyle::SP_DialogResetButton );
|
||||
namedInsert( "icn70Dummy", QStyle::SP_FileLinkIcon );
|
||||
namedInsert( "TrashIcon", QStyle::SP_TrashIcon );
|
||||
namedInsert( "TrashIcon", QStyle::SP_TrashIcon );
|
||||
namedInsert( "icn72Dummy", QStyle::SP_DialogSaveButton );
|
||||
namedInsert( "icn73Dummy", QStyle::SP_MediaPause );
|
||||
namedInsert( "VistaShield", QStyle::SP_VistaShield );
|
||||
namedInsert( "VistaShield", QStyle::SP_VistaShield );
|
||||
namedInsert( "icn75Dummy", QStyle::SP_DialogYesButton );
|
||||
namedInsert( "icn76Dummy", QStyle::SP_MediaPlay );
|
||||
namedInsert( "MediaPlay", QStyle::SP_MediaPlay );
|
||||
namedInsert( "icn77Dummy", QStyle::SP_DirClosedIcon );
|
||||
namedInsert( "icn79Dummy", QStyle::SP_MediaSeekBackward );
|
||||
namedInsert( "DirHomeIcon", QStyle::SP_DirHomeIcon );
|
||||
|
@@ -86,10 +86,10 @@ XQItem* XQMainModel::addProjectItem( XQNodePtr contentNode )
|
||||
|
||||
void XQMainModel::addSectionItem( const XQModelSection& section, XQItem* projectItem )
|
||||
{
|
||||
/*
|
||||
/*
|
||||
XQNodePtr sheetNode = projectItem->sheetNode()->find_child_by_tag_name("CurrentSection");
|
||||
XQItem* newItem = _itemFactory.makeItem(sheetNode, §ion.contentType() );
|
||||
projectItem->appendRow( newItem );
|
||||
XQItemList list = _itemFactory.makeRow( XQItemFactory::mSingle, sheetNode, nullptr, c_ContentType );
|
||||
projectItem->appendRow( list );
|
||||
_treeTable->expand( projectItem->index() );
|
||||
*/
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QPushButton>
|
||||
#include <QQmlContext>
|
||||
|
||||
#include <xqmainwindow.h>
|
||||
#include <xqcommand.h>
|
||||
@@ -91,15 +92,7 @@ void XQMainWindow::initMainWindow()
|
||||
connect( _mainTreeView, SIGNAL(clicked(QModelIndex)), this, SLOT(onTreeItemClicked(QModelIndex)) );
|
||||
connect( _tabWidget, SIGNAL(tabBarClicked(int)), this, SLOT(onTabClicked(int)) );
|
||||
|
||||
connect( _tabWidget, SIGNAL(tabBarClicked(int)), this, SLOT(onTabClicked(int)) );
|
||||
|
||||
/*
|
||||
XQQuickWidget* butt = new XQQuickWidget;
|
||||
butt->resize(800,600);
|
||||
butt->setWindowFlags(Qt::Dialog | Qt::WindowStaysOnTopHint);
|
||||
butt->move( 1200,300);
|
||||
butt->show();
|
||||
*/
|
||||
|
||||
/*
|
||||
connect( &_mainModelView, &XQViewModel::itemCreated, this, [=, this](XQItem* item)
|
||||
@@ -124,7 +117,7 @@ void XQMainWindow::initMainWindow()
|
||||
|
||||
// #2. load demo data
|
||||
loadDocument( c_DocumentFileName1 );
|
||||
//loadDocument( c_DocumentFileName2 );
|
||||
loadDocumentQML( c_DocumentFileName2 );
|
||||
|
||||
qDebug() << " --- all here: " << XQNode::s_Count;
|
||||
|
||||
@@ -279,12 +272,13 @@ void XQMainWindow::onTreeItemClicked(const QModelIndex& index )
|
||||
void XQMainWindow::onTabClicked( int index )
|
||||
{
|
||||
//const QString& key = _documentStore[index].treeItem->attribute( c_ProjectID );
|
||||
qDebug() << " ---- tab clicked: " << index << " : " << _documentStore[index].friendlyName;// << ": " << key;
|
||||
//qDebug() << " ---- tab clicked: " << index << " : " << _documentStore[index].friendlyName;// << ": " << key;
|
||||
//_mainTreeView->setCurrentIndex( _documentStore[index].treeItem->index() );
|
||||
}
|
||||
|
||||
void XQMainWindow::onSectionCreated( const XQModelSection& section )
|
||||
{
|
||||
qDebug() << " --- XXX section created: " << section.contentType() << ":" << section.sheetRootNode()->to_string();
|
||||
if( _currentProjectItem )
|
||||
{
|
||||
_mainModelView.addSectionItem( section, _currentProjectItem );
|
||||
@@ -296,6 +290,56 @@ void XQMainWindow::onSectionToggled( const XQModelSection& section )
|
||||
//qDebug() << " --- XXX section toggled: " << section.contentType() << ":" << section.sheetRootNode()->to_string();
|
||||
}
|
||||
|
||||
QStandardItemModel* createModel() {
|
||||
auto* model = new QStandardItemModel;
|
||||
model->setHorizontalHeaderLabels({ "Name" });
|
||||
|
||||
QStandardItem* parent = new QStandardItem("Tiere");
|
||||
parent->appendRow(new QStandardItem("Hund"));
|
||||
parent->appendRow(new QStandardItem("Katze"));
|
||||
model->appendRow(parent);
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
void XQMainWindow::loadDocumentQML( const QString& fileName )
|
||||
{
|
||||
// gibts die Datei?
|
||||
if( !QFile::exists( fileName) )
|
||||
throw XQException( "no such file", fileName );
|
||||
|
||||
XQNodeFactory treeLoader;
|
||||
// xml daten laden
|
||||
XQNodePtr rawTree = treeLoader.load_tree( qPrintable(fileName) );
|
||||
// versteckten root node ignorieren
|
||||
XQNodePtr contentRoot = rawTree->first_child();
|
||||
|
||||
|
||||
// 'friendly Name' ist ein Link auf ein anderes Attribute
|
||||
// das als Namen verwendet wird.
|
||||
const QString& fName = contentRoot->friendly_name();
|
||||
|
||||
QStandardItemModel* model = createModel();
|
||||
|
||||
// Ein neues Child-Model erzeugen
|
||||
XQChildModel* childModel = new XQChildModel(this);
|
||||
// die Modelstruktur anlegen
|
||||
childModel->initModel( c_ChildModelName );
|
||||
// model inhalte laden
|
||||
childModel->addModelData( contentRoot->first_child() );
|
||||
|
||||
XQQuickWidget* quickChild = new XQQuickWidget(_tabWidget);
|
||||
//quickChild->setResizeMode(QQuickWidget::SizeViewToRootObject);
|
||||
|
||||
quickChild->rootContext()->setContextProperty("meinModel", childModel);
|
||||
quickChild->setSource(QUrl(QStringLiteral("qrc:/quickview.qml")));
|
||||
_tabWidget->addTab( quickChild, "Fitze!" );
|
||||
_tabWidget->setCurrentWidget( quickChild );
|
||||
quickChild->setResizeMode(QQuickWidget::SizeRootObjectToView);
|
||||
|
||||
|
||||
}
|
||||
|
||||
//! liest eine XML datei namens 'fileName'
|
||||
|
||||
void XQMainWindow::loadDocument( const QString& fileName )
|
||||
@@ -347,9 +391,7 @@ void XQMainWindow::loadDocument( const QString& fileName )
|
||||
|
||||
// neuen eintrag im übsichts-baum erzeugen
|
||||
_currentProjectItem = _mainModelView.addProjectItem( contentRoot );
|
||||
//_documentStore.addDocument( fileName, pTitle, _currentProjectItem, childModel );
|
||||
|
||||
qDebug() << " --- ZZZ und jetzt:";
|
||||
_documentStore.addDocument( fileName, pTitle, _currentProjectItem, childModel );
|
||||
|
||||
// die Modelstruktur anlegen
|
||||
childModel->initModel( c_ChildModelName );
|
||||
|
@@ -60,6 +60,7 @@ protected:
|
||||
// fixme implement
|
||||
void showDocumnet( const QString& key ){}
|
||||
void loadDocument( const QString& fileName );
|
||||
void loadDocumentQML( const QString& fileName );
|
||||
void saveDocument( const QString& fileName );
|
||||
|
||||
|
||||
|
@@ -469,7 +469,7 @@ QVariant XQItem::data(int role ) const
|
||||
|
||||
case Qt::ToolTipRole:
|
||||
{
|
||||
return rawText() + ":" + unitTypeToString() + ":" + renderStyleToString() + ":" + unitTypeToString() + ":" + itemFlagsToString();
|
||||
return itemType().text() + ":: " + rawText() + ":" + unitTypeToString() + ":" + renderStyleToString() + ":" + unitTypeToString() + ":" + itemFlagsToString();
|
||||
}
|
||||
|
||||
//
|
||||
|
@@ -51,7 +51,6 @@ void XQItemFactory::initItemFactory( const QString& modelSheetFileName )
|
||||
for( const XQNodePtr& typeSheetNode : _typesSheet->children())
|
||||
{
|
||||
XQItemType* itemType = new XQItemType;
|
||||
//const QString& typeName = typeSheetNode->tag_name();
|
||||
const QString& typeName = typeSheetNode->tag_name();
|
||||
configureItemType(itemType, typeSheetNode);
|
||||
|
||||
|
@@ -586,7 +586,7 @@ void XQViewModel::onShowContextMenu(const QPoint& point)
|
||||
QHash<int, QByteArray> XQViewModel::roleNames() const
|
||||
{
|
||||
|
||||
QHash<int, QByteArray> roles;
|
||||
QHash<int, QByteArray> roles = QStandardItemModel::roleNames();
|
||||
roles[XQItem::ContentRole] = "content";
|
||||
roles[XQItem::ItemTypeRole] = "itemType";
|
||||
roles[XQItem::RenderStyleRole] = "renderStyle";
|
||||
|
@@ -14,7 +14,8 @@
|
||||
|
||||
#include <xqquickwidget.h>
|
||||
|
||||
XQQuickWidget::XQQuickWidget()
|
||||
XQQuickWidget::XQQuickWidget(QWidget *parent)
|
||||
: QQuickWidget(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
@@ -20,8 +20,10 @@
|
||||
class XQQuickWidget : public QQuickWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
XQQuickWidget();
|
||||
|
||||
XQQuickWidget(QWidget *parent = nullptr);
|
||||
};
|
||||
|
||||
#endif // XQQUICKWIDGET_H
|
||||
|
@@ -84,7 +84,6 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
|
||||
DISTFILES += \
|
||||
../quick/xqmodelview.qml \
|
||||
README.md \
|
||||
xml/modelsheets.xml \
|
||||
xml/modeldata1.xtr \
|
||||
|
@@ -1,8 +1,10 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>../xml/modeldata1.xtr</file>
|
||||
<file>../xml/modeldata2.xtr</file>
|
||||
<file>../xml/modeldata3.xtr</file>
|
||||
<file>../xml/modelsheets.xml</file>
|
||||
<file alias="modeldata1.xtr">../xml/modeldata1.xtr</file>
|
||||
<file alias="modeldata2.xtr">../xml/modeldata2.xtr</file>
|
||||
<file alias="modeldata3.xtr">../xml/modeldata3.xtr</file>
|
||||
<file alias="modelsheet.xml">../xml/modelsheets.xml</file>
|
||||
<file alias="quickview.qml">../quick/quickview.qml</file>
|
||||
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
@@ -8,8 +8,8 @@
|
||||
|
||||
<ItemTypes>
|
||||
<TreeParentType RenderStyle="PlainStyle" ItemFlags="IsEnabled|IsDropEnabled" Icon="DirIcon" />
|
||||
<TreeChildType RenderStyle="PlainStyle" ItemFlags="IsEnabled" Icon="DesktopIcon"/>
|
||||
<TreeSectionType RenderStyle="PlainStyle" ItemFlags="IsUserCheckable|IsEnabled" Icon="DirIcon"/>
|
||||
<TreeSectionType RenderStyle="PlainStyle" ItemFlags="IsEnabled" Icon="DesktopIcon"/>
|
||||
<TreeChildType RenderStyle="PlainStyle" ItemFlags="IsUserCheckable|IsEnabled" Icon="MediaPlay"/>
|
||||
<HeaderType RenderStyle="HeaderStyle" ItemFlags="IsEnabled"/>
|
||||
<HiddenType RenderStyle="HiddenStyle"/>
|
||||
<StaticType RenderStyle="PlainStyle"/>
|
||||
|
Reference in New Issue
Block a user