2016-02-21 4 views
-1

Я сделал блокнот, который отлично работает с использованием рамки Qt. Когда я открываю файл с помощью QFileDialog и получаю путь к файлу, все в порядке. Но когда я открываю файл из FileBrowser, QTextEdit пуст. Я думаю, что это абсолютно нормально, потому что я не получил путь к открытому файлу. Это именно то, что мне нужно, как получить открытый путь к файлу и запасти его в QString. Есть ли способ получить его в Qt? Я слышал про argv, но я не знал, как его использовать, и я не нашел документацию. Спасибо за вашу помощь!Qt получить каталог открытого файла с

+0

Я думаю, что это нуждается в более разъяснении. Какие два случая? Во втором сценарии вы открываете файл с QFileDialog и помещаете содержимое в QTextDialog и как вы это делаете в первом сценарии? И используете ли вы здесь блокнот Windows или это просто имя для вашего приложения? – IceFire

+0

http://doc.qt.io/qt-5/qcoreapplication.html#arguments – nwp

+0

Спасибо за ваше предупреждение! Я исправил это. – QApps

ответ

1

Вы хотите прочитать аргументы приложения. Самый простой способ проверить, если есть что-то прошло, а затем интерпретировать первый аргумент как имя файла, например:

QString fileUrl; 
if(argc > 1) 
    fileUrl = QString(argv[1]); 

Или:

QCoreApplication app(argc, argv); 
QString fileUrl; 
if(app.arguments().length() > 1) 
    fileUrl = app.arguments()[1]; 

Еще в Qt есть более гибкое решение, использующее QCommandLineParser например, :

QCoreApplication app(argc, argv); 
QCommandLineParser parser; 
parser.addPositionalArgument("url", "Url of file to open"); 
parser.process(app); 
QString fileUrl; 
if(parser.positionalArguments().length() > 0) 
    fileUrl = parser.positionalArguments()[0]; 

Последнее решение является более гибким, поскольку в приложение будет легко добавить другие параметры командной строки.