在C ++中打开QFileDialog时来自KGlobal :: locale的错误

时间:2014-07-27 14:55:45

标签: c++ linux qt4 kde qfiledialog

我有这个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

1 个答案:

答案 0 :(得分:0)

我已经迟到了,但无论如何这显然是一个非常古老的问题。它在5年前解决了,在这里:http://pyqt.riverbankcomputing.narkive.com/GMKOTskG/a-dire-warning-message#post16

答案简短:

打开文件对话框时,它使用" system"文件对话框。在这种情况下,系统对话框是KDE,并且归咎于KDE库的问题会产生该警告。想避免这个问题?不要使用"系统"文件对话框。

openFileDialog功能中,只需添加:

dialog.setOption(QFileDialog::DontUseNativeDialog)

这个解决方案对我有用。 (我使用PyQt4,但症状相同。)