繁体   English   中英

使用QFileDialog自动保存文件

[英]Automatically saving a file with 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对象后,我希望将选项卡中的更改保存到我之前在tmp目录中创建的文件“ test.txt”中。 当我执行此操作时,什么也没有发生,QFileDialog弹出,但是未选择并保存test.txt,我该如何实现?

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

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

对于我们的自动化测试,我们只需要暂时隐藏文件对话框,调用selectFile()并再次显示

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM