を節約しながらqfiledialogのデフォルトのファイル名を設定する方法はあります。だからQMLで使う必要があります。しかし、私が知る限り、QMLのFileDialogにはデフォルトの保存ファイル名を設定するメソッド/プロパティはありません。description.Iは任意のウィジェット</em></strong>なくてはQtクイックアプリケーション<strong><em>にQFileDialogを使用する必要があるとして、ファイル
誰もがこのような要件に同じ問題を抱えていますか?
を節約しながらqfiledialogのデフォルトのファイル名を設定する方法はあります。だからQMLで使う必要があります。しかし、私が知る限り、QMLのFileDialogにはデフォルトの保存ファイル名を設定するメソッド/プロパティはありません。description.Iは任意のウィジェット</em></strong>なくてはQtクイックアプリケーション<strong><em>にQFileDialogを使用する必要があるとして、ファイル
誰もがこのような要件に同じ問題を抱えていますか?
QML
はこのような特徴が欠けている。解決方法はを確認してください。
EDIT:
ソリューションは.pro
ファイル
QT += widgets
qmlfile.h
//qmlfile.h
#ifndef QMLFILE_H
#define QMLFILE_H
#include <QObject>
class QMLFile : public QObject
{
Q_OBJECT
public:
explicit QMLFile(QObject *parent = 0);
Q_INVOKABLE QString getFileContents() const;
Q_INVOKABLE void saveFileContents(QString fileContents) const;
};
#endif
qmlfile.cpp
0123に以下を追加しますので、ウィジェットを使用していますより#include <QFileDialog>
#include <QTextStream>
#include <QDebug>
#include "qmlfile.h"
QMLFile::QMLFile(QObject *parent): QObject(parent)
{
}
QString QMLFile::getFileContents() const
{
QString fileName = QFileDialog::getOpenFileName(NULL, tr("Open File"), "/home", tr("Text Files (*.txt)"));
qDebug() << "fileName:" << fileName;
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
return "";
QString content = file.readAll();
file.close();
return content;
}
void QMLFile::saveFileContents(QString fileContents) const
{
QString fileName = QFileDialog::getSaveFileName(NULL, tr("Save File"), "/home/ansh/data.txt", tr("Text Files (*.txt)")); // This is were default file name is selected
QFile file(fileName);
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{
qDebug() << "created file:" << fileName;
QTextStream stream(&file);
stream << fileContents << endl;
file.close();
return;
}
else
{
qDebug() << "could not create file:" << fileName;
return;
}
}
main.cppに
#include <QGuiApplication>
#include <QQuickView>
#include <QQmlContext>
#include <QApplication>
#include "qmlfile.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQuickView view;
QMLFile qmlFile;
view.rootContext()->setContextProperty("QMLFile", &qmlFile);
view.setSource(QUrl(QLatin1String("qrc:/main.qml")));
view.show();
return app.exec();
}
main.qml
import QtQuick 2.5
import QtQuick.Controls 2.0
Rectangle {
width: 360; height: 360
Rectangle{
id:buttons
height: 50; width: parent.width; anchors.top: parent.top
Button {
anchors {
left: parent.left
leftMargin: 5
top: parent.top
topMargin: 5
}
text: "open"
onClicked: txt.text = QMLFile.getFileContents();
}
Button {
anchors {
right: parent.right
rightMargin: 5
top: parent.top
topMargin: 5
}
text: "save"
onClicked: QMLFile.saveFileContents(txt.text);
}
}
Rectangle{
id:textHandle
width: parent.width; height: parent.height - buttons.height; anchors.bottom: parent.bottom
TextEdit{
id: txt; anchors.fill: parent
}
}
}
他のWebページへのリンクのみで回答するのは受け入れられません。 –
@SurajeetBharatiコードは、ここで多く書くべき方法です。 –
ここにコピーできますか? – LL2012
[ドキュメント](http://doc.qt.io/qt-5/qml- qtquick-dialogs-filedialog.html)、 'fileUrl'はより適切なプロパティと思われます。 – Jarod42
いいえ、それは使用できません、fileUrlは読み取り専用プロパティです – LL2012
'QFileDialog'に同じデフォルトファイル名を設定できますか? – folibis