我有这个C ++代码:
bool load ()
{
const QString * filename = openFileDialog(QFileDialog::AcceptOpen, QFileDialog::ExistingFile);
if (filename != 0)
return load(*filename);
else return false;
}
const QString * openFileDialog (QFileDialog::AcceptMode acceptMode, QFileDialog::FileMode mode)
{
QFileDialog dialog;
dialog.setAcceptMode(acceptMode);
dialog.setFileMode(mode);
dialog.show();
QStringList files = dialog.selectedFiles();
if (files.isEmpty()) return 0;
return new QString(files.at(1));
}
现在,我收到以下错误:
KGlobal :: locale ::警告使用有效的主要组件而不是虚假组件重新创建全局KLocale,这通常意味着您在创建主组件之前尝试调用i18n相关函数。你不应该这样做,因为它很可能不会起作用
文件对话框永远不会出现。
我正在使用Debian wheezy(德语),KDE 4.8.4,Qt 4.8.2和GCC 4.7.2
答案 0 :(得分:0)
我已经迟到了,但无论如何这显然是一个非常古老的问题。它在5年前解决了,在这里:http://pyqt.riverbankcomputing.narkive.com/GMKOTskG/a-dire-warning-message#post16
答案简短:
打开文件对话框时,它使用" system"文件对话框。在这种情况下,系统对话框是KDE,并且归咎于KDE库的问题会产生该警告。想避免这个问题?不要使用"系统"文件对话框。
在openFileDialog
功能中,只需添加:
dialog.setOption(QFileDialog::DontUseNativeDialog)
这个解决方案对我有用。 (我使用PyQt4,但症状相同。)