使用QFileDialog自动保存文件

时间:2014-04-28 06:16:47

标签: c++ qt qfiledialog

我必须使用QTest,Qt,C ++自动化测试: 我在一个标签(tabwidget的一部分)中写文本,然后尝试关闭它,然后出现一个QFileDialog(因为我对选项卡中的明文进行了更改),我试着"赶上"像这样的QFileDialog:

    QWidgetList topWidgets = QApplication::topLevelWidgets();
    foreach (QWidget *w, topWidgets) {
        if (QFileDialog *fd = qobject_cast<QFileDialog *>(w)) {
            fd->setFileMode(QFileDialog::ExistingFiles);
            fd->selectFile("/tmp/test.txt");

        }
    }

获取QFileDialog对象后,我希望我从标签中的更改保存在文件&#34; test.txt&#34;我之前在tmp目录中创建的。当我执行此操作没有任何反应时,弹出QFileDialog,但是没有选择test.txt并且没有保存,我该如何实现呢?

2 个答案:

答案 0 :(得分:2)

如果filedialog可见且焦点设置为行编辑小部件,则selectFile方法不起作用。来自qfiledialog.cpp(QT 5.2):

if (!isVisible() || !d->lineEdit()->hasFocus())
    d->lineEdit()->setText(file);

对于我们的自动化测试,我们只是隐藏了一段时间,调用selectFile()并再次显示

答案 1 :(得分:1)

试试这个:

var client = new AMQPClient(Policy.merge({
  senderLink: {
    encoder: function(body) { return body; }
  },
  receiverLink: {
    decoder: function(body) { return body; } 
  }
}, Policy.EventHub));