gpt4 book ai didi

c++ - 修改 QFileDialog::getOpenFileName 以获得额外的下拉列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:32:22 24 4
gpt4 key购买 nike

我是一名学生程序员,使用 Qt 为我的公司构建一个阅读器表。这位读者既是编辑者又是转换器。它读入一个 .i 文件,允许对文本文档进行表格编辑,然后输出一个 .scf 文件,该文件本质上是一个单独的值文件,堆叠在带有标题的图例下。我离题了...基本上导入的文件格式真的很难扫描和读入(几乎不可能)所以我想修改打开的文件 preBuilt QFileDialog 以在选择旧文件类型进行声明时包含一个额外的下拉列表他们的模板标题。

当用户选择 .i 扩展文件(选项 2 文件类型)时,我想启用一个额外的下拉菜单以允许用户选择它是哪种类型的 .i 文件(选择模板)。这样我就不必与上帝打交道了,天知道有多少小时试图找出一种方法来为每种不同类型将所有标题索引到表中。目前我的 importFile 函数使用这个调用对话框:

QString fileLocation = QFileDialog::getOpenFileName(this,("Open File"), "", ("Simulation Configuration File(*.scf);;Input Files(*.prp *.sze *.i *.I *.tab *.inp *.tbl)")); //launches File Selector

我一直在引用 QFileDialog Documentation尝试找到我需要的解决方案,但无济于事。感谢您阅读我的帖子,并提前感谢您对此提供的任何指导。

2012 年 3 月 16 日更新;首先,我要感谢 Masci 对此事的最初支持。下面是我收到的连接语句以及我收到的错误。

//Declared data type
QFileDialog openFile;
QComboBox comboBoxTemplateSelector;
connect(openFile, SIGNAL(currentChanged(const &QString)), this, SLOT(checkTemplateSelected()));
openFile.layout()->addWidget(comboBoxTemplateSelector);

compile errors

我还注意到它不喜欢我将 QComboBox 添加到修改后的对话框布局的方式(这是第二个错误)。我真的希望我只是在做一些愚蠢的事情,这是一个容易克服的任务。

为了回应 tmpearce 的评论,这是我的标题代码;

#include <QWidget>
namespace Ui {
class ReaderTable;
}
class ReaderTable : public QWidget
{
Q_OBJECT
public:
explicit ReaderTable(QWidget *parent = 0);
~ReaderTable();
public slots:
void checkTemplateSelected();
void importFile();
void saveFile();
private:
Ui::ReaderTable *ui;
};

感谢阅读并提前感谢您对这一挑战的贡献!

最佳答案

实例化一个 QFileDialog(不要调用 getOpenFileName 静态方法),访问它的布局并向它添加一个禁用的 QComboBox。

// mydialog_ and cb_ could be private fields inside MyClass
mydialog_ = new QFileDialog;
cb_ = new QComboBox;
cb_->setEnabled(false);
connect(mydialog, SIGNAL(currentChanged(const QString&)), this, SLOT(checkFilter(const QString&)));
mydialog_->layout()->addWidget(cb_);

if (mydialog_->exec() == QDialog::Accepted) {
QString selectedFile = mydialog_->selectedFiles()[0];
QString cbSelection = cb_->currentText();
}

槽会是这样的:

void MyClass::checkFilter(const QString& filter) 
{
cb_->setEnabled(filter == "what_you_want");
}

从对话框 exec() 返回,您可以检索选定的文件和 cb_ 当前选择。请注意,您可以在对话框底部添加比简单的 QComboBox 更复杂的东西,以处理 gui 装饰。

实际上我不太喜欢这种方法(但这正是您所要求的:-)。我会做一个像这样的简单对话框:

enter image description here

只有在所选文件符合您的条件时才启用组合。 “浏览”按钮可以调用QFileDialog中的getOpenFileMethod静态方法。

关于c++ - 修改 QFileDialog::getOpenFileName 以获得额外的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com