- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是一名学生程序员,使用 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);
我还注意到它不喜欢我将 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 装饰。
实际上我不太喜欢这种方法(但这正是您所要求的:-)。我会做一个像这样的简单对话框:
只有在所选文件符合您的条件时才启用组合。 “浏览”按钮可以调用QFileDialog中的getOpenFileMethod静态方法。
关于c++ - 修改 QFileDialog::getOpenFileName 以获得额外的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707295/
我使用带有 OPENFILENAME 结构的 GetOpenFileName,该结构使用 lpstrFilter 将文件过滤为 *.JPG。但是,在文件打开对话框中,对于文件名,用户可以输入 *.XL
我有以下代码,问题是,当我打印文件的完整路径名时,数组中每个字符之间有双空格。 // initialization outside any class in .c code OPENFILENAME
我想创建一个类似于使用 GetOpenFileDialog 创建的对话框。但是,我希望对话框显示程序提供的文件名列表,而这些文件名不一定作为文件存在于目录中。目的是为打开文件提供一个具有类似外观和感觉
我正在尝试这样调用 GetOpenFileName: int main(int argc, char* argv[]) { OPENFILENAME ofn; // common dial
所以我有这个简单的代码,因为我是 win32 的新手所以不要指望我写出非常困难的代码,但是,这是我的 winProc LRESULT CALLBACK WindowProcedure (HWND hw
我的代码如下。 OPENFILENAMEA open; ZeroMemory(&open, sizeof(open)); open.lStructSize = sizeof(LPOPENFILENAM
在我的应用程序中,我需要加载许 multimap 像。我真的会使用一个选项来选择最后打开的文件,所以我想知道最后选择的文件。文档说: QString fileName = QFileDialog::g
有点奇怪。好的,所以我正在使用 OGRE 游戏引擎,它有一个“SceneManager”类,可以在后台打开一些文件流。如果我在使用 GetOpenFileName() 之前使用这些流,这些流工作正常,
代码就像 dlg = PyQt4.QtGui.QFileDialog() self.filename = dlg.getOpenFileName() 当对话框 pop 时,我单击路径中带有汉字的文件。
所以我有这个代码: OPENFILENAME ofn; char file_name[100]; ZeroMemory(&ofn, sizeof(OPE
当我尝试向“打开文件”对话框添加一些自定义控件时遇到问题。我使用了如下所示的资源文件,但它不起作用。我认为某个地方有错误,但我无法纠正它。如何在“打开文件”对话框上显示自定义控件? 程序.c #inc
我知道 Microsoft 建议在 GetOpenFileName() 和 GetSaveFileName() 上使用通用项对话框,但我使用的是一些较旧的代码。 如何限制 GetOpenFileNam
我使用 GetOpenFilename()让用户选择一个文件。这是代码: wchar_t buffer[MAX_PATH] = { 0 }; OPENFILENAMEW open_filena
这是在 qtforum.org 上首次发布的问题我在哪里 got no answer : 我无法在控制台应用程序中隐藏使用过的“打开”对话框。以下是用于测试此行为的 main.cc 文件的内容: #i
我正在尝试将文件的扩展名过滤器应用于文件的选择对话框。 这种方式有效: ofn.lpstrFilter = "(*.exe) Windows Executable\0*.exe\0" "(*.in
GetOpenFileName (出于可疑原因)在显示对话框时更改应用程序的当前目录。这可以通过将 OFN_NOCHANGEDIR 指定为对话框初始化标志来在对话框关闭时重置: OFN_NOCHANG
首先,这是我的配置: VS2010/Debug/C++ Win32 Project/Vista Home Premium 通过窗口 (CreateWindow) 中的按钮 (CreateWindow)
我试过谷歌搜索,但人们似乎遇到了同样的问题:我们无法获得所选文件的列表。 这是一段简单的工作代码,与我使用的代码类似: OPENFILENAME ofn = { sizeof ofn }; wchar
我参与了命名空间外壳扩展(NSE)的开发,其中包含来自某些文件夹的文件列表。我在 Window Vista 上使用标志 OFN_ALLOWMULTISELECT 创建的打开文件对话框 (OFD) 有一
我正在使用 Win32 和 C++ 制作一个应用程序,该应用程序可以通过带有 GetOpenFileName 函数的对话框加载文件的内容。一切正常,除了当我关闭主窗口并且应用程序退出并将其打印到控制台
我是一名优秀的程序员,十分优秀!