2014-01-10 64 views
3

我正在开发一个Qt GUI应用程序。KDE在控制台写入(太多)

我的问题是我使用控制台的另一个线程(它写他的沟通),主要问题是,当我创建一个QFileDialog(为了选择一个脚本文件),KDE是wrinting无用的信息(至少对我来说)。

有没有办法从我的QFileDialog中删除所有的可能性来写入任何东西到consolethat?有没有把主输出切换到另一个(无用的)目标的技巧?

我的代码(但我不认为这是真的会帮助你):

void MyGUI::setPathWithFileExplorer() 
{ 
    QFileDialog dlg; 
    dlg.resize(320,240); 
    QString fileName = dlg.getOpenFileName(this, tr("Open script file"), "~/", tr("Script Files (*.js)")); 

    if(fileName != "") 
    ui->editScriptPath->setText(fileName); 
} 

输出:

kded(21003)摩勒:: KioSlaveNotifier :: onDirectoryEntered:“垃圾: /“ kded(21003)Mollet :: KioSlaveNotifier :: onDirectoryLeft:”trash:/“ kded(21003)Mollet :: KioSlaveNotifier :: onDirectoryEntered: ”file:// [PATH TO MY USER FOLDER]“kded(21003 ) Mollet :: KioSlaveNotifier :: onDirectoryLeft:我的用户文件夹“kfilemodule(21676) KSambaSharePrivate :: testparmParamValue”file:// [PATH TO MY USER FOLDER]“kded(21003) Mollet :: KioSlaveNotifier :: onDirectoryEntered: ”file: :我们得到了一些错误,而 运行testparm“从/etc/samba/smb.conf加载smb配置文件 加载的服务文件确定。警告:设置'安全=广告'应 不与'密码服务器'参数相结合。 (默认情况下, Samba会自动发现正确的DC)。警告: 您有一些共享名称超过12个字符。某些较老的客户可能无法访问这些 。 (如:Windows9x的, WindowsMe的,和smbclient的前桑巴3.0。)“ QInotifyFileSystemWatcherEngine :: addPaths:inotify_add_watch失败: 权限非accordéeQFileSystemWatcher:无法添加路径: 的/ var/lib中/桑巴/ usershares

+2

QFileDialog打印调试到底是什么? – hank

+0

是的,它是警告还是常规信息? OT:'fileName!=“”'应该是'!fileName.isEmpty()'。您可以通过写入文件而不是输出来处理这个问题,并在另一个控制台中“尾随”该文件。 – lpapp

+0

@hank:你究竟通过调试意味着什么?我没有看到OP提到调试。 – lpapp

回答

3

我会建议使用kdebugdialog,然后Deselect All,在这里你可以看到我的机器上内嵌屏幕截图。

enter image description here

如果做不到这一点,你总是可以使用QFile将输出记录到专用文件中,然后在单独的提示或应用程序中进行监视。

如果你这样下去,你甚至可以看看5.2中添加的记录器功能,如果你碰巧能够使用该版本。

+0

它的工作表示感谢。 对于记录器部分,我很遗憾使用并且必须使用Qt 4.8.1。 – MokaT

+0

这只会在本地解决问题,所以如果您想部署程序而另一个线程使用stdout/stderr来实现关键功能,那么这不是一个好的解决方案。但实际上,依靠它们的清洁是危险的,应该避免。 –

+0

@FrankOsterfeld:我们不知道确切的用例,因此如果kde设置不足,请参阅IMO合理的回退选项的屏幕截图后的文本。 – lpapp