gpt4 book ai didi

c++ - QFileDialog unicode目录不可用

转载 作者:行者123 更新时间:2023-11-28 01:51:58 25 4
gpt4 key购买 nike

我正在尝试使用 QFileDialog 获取文件路径,编译很顺利,但是当我从应用程序打开对话框时,会弹出此窗口:

enter image description here

看起来路径中缺少字母“á”。

即使我尝试从快速访问中打开桌面,它也会弹出(顺便说一句。我使用的是 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);
}

最佳答案

我同意你最后的说法,即你的系统设置中的某些地方可能有问题。

我使用以下小示例应用程序进行测试:

// 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 进行了相同的测试。

Snapshot of testQFileDialog.exe

关于c++ - QFileDialog unicode目录不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42680635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com