我正在尝试使用QFileDialog获取文件路径,编译很顺利,但是当我从应用程序打开对话框时,弹出这个窗口:
看起来它缺少路径上的字母“á”。
即使我尝试从快速访问中打开桌面,它也会弹出(顺便说一下。我使用的是Windows 10 64位)
Qt版本:5.7.0
编译器:Microsoft Visual C ++编译器14.0(amd64)
有人可以帮我解决一下吗?
这是我的代码:
// Header:
#include <QMainWindow>
#include <QLineEdit>
#include <QFileDialog>
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionOpen_triggered()
{
QString file = QFileDialog::getOpenFileName(this, tr("Open ui file"), "c://", tr("Qt UI Files (*.ui)"));
ui->lineEdit->setText(file);
}
答案 0 :(得分:2)
我同意您最后的陈述,即系统设置中的某些内容可能有误。
我使用以下小样本应用程序进行测试:
// standard C++ header:
#include <iostream>
#include <string>
// Qt header:
#include <QApplication>
#include <QFileDialog>
#include <QGridLayout>
#include <QGroupBox>
#include <QLabel>
#include <QLineEdit>
#include <QMainWindow>
#include <QPushButton>
using namespace std;
int main(int argc, char **argv)
{
cout << QT_VERSION_STR << endl;
// main application
#undef qApp // undef macro qApp out of the way
QApplication qApp(argc, argv);
// setup GUI
QMainWindow qWin;
QGroupBox qBox;
QGridLayout qGrid;
QPushButton qBtn(QString::fromLatin1("File Dialog"));
qGrid.addWidget(&qBtn, 0, 0, 1, 2);
QLabel qLbl(QString::fromLatin1("File:"));
qGrid.addWidget(&qLbl, 1, 0);
QLineEdit qTxt;
qGrid.addWidget(&qTxt, 1, 1);
qBox.setLayout(&qGrid);
qWin.setCentralWidget(&qBox);
qWin.show();
// install signal handlers
QObject::connect(&qBtn, &QPushButton::clicked,
[&qTxt](bool) {
#if 0 // how I do it usually...
string file = QFileDialog::getOpenFileName(&qTxt,
QString::fromUtf8("Open File"),
QString(),
QString::fromUtf8("Text File (*.txt);;All Files (*)")
).toUtf8();
qTxt.setText(QString::fromUtf8(file.c_str()));
#else // using QString only...
QString file = QFileDialog::getOpenFileName(&qTxt,
QString::fromUtf8("Open File"),
QString(),
QString::fromUtf8("Text File (*.txt);;All Files (*)")
);
qTxt.setText(file);
#endif
});
return qApp.exec();
}
我在Windows 10(64位)上使用VS2013,Qt 5.6版进行了编译。
我在我的软件std::string
中使用UTF-8编码。 (因此,字符串可以在库中使用而不依赖于Qt或任何其他GUI。)但是,我使用QString
进行了相同的测试。