Soy un programador de estudiantes que usa Qt para crear una tabla de lectores para mi empresa. Este lector es a la vez editor y convertidor. Se lee en un archivo .i permite la edición de tabla de un documento de texto y luego saca un archivo .scf que es esencialmente un archivo de valores separados apilados en una leyenda construida con encabezados. Estoy divagando ... Básicamente, el formato de archivo importado es muy difícil de escanear y leer (casi imposible) así que lo que me gustaría es modificar el archivo abierto preBuilt QFileDialog para incluir un menú desplegable adicional cuando se seleccionen tipos de archivos antiguos para declarar sus encabezados de plantilla.Modificación de QFileDialog :: getOpenFileName para tener un menú desplegable adicional
Cuando el usuario selecciona .i archivos de extensión (opción 2 tipo de archivo) Me gustaría habilitar un menú desplegable adicional para permitirle al usuario seleccionar qué tipo de archivo .i es (plantilla seleccionada). De esta forma no tengo que lidiar con Dios sabe cuántas horas tratando de encontrar una manera de indexar todos los encabezados en la tabla para cada tipo diferente. Actualmente mi función IMPORTFILE llama al diálogo utilizando la siguiente:
QString fileLocation = QFileDialog::getOpenFileName(this,("Open File"), "", ("Simulation Configuration File(*.scf);;Input Files(*.prp *.sze *.i *.I *.tab *.inp *.tbl)")); //launches File Selector
He estado referenciación QFileDialog Documentation para tratar de encontrar una solución a lo que necesito, pero no han tenido éxito. Gracias por leer mi publicación y gracias de antemano por cualquier dirección que puedan dar sobre esto.
ACTUALIZACIÓN MAR 16 2012; Primero, me gustaría dar las gracias a Masci por su apoyo inicial en este asunto. A continuación se muestra la declaración de conexión que tengo junto con el error que recibo.
//Declared data type
QFileDialog openFile;
QComboBox comboBoxTemplateSelector;
connect(openFile, SIGNAL(currentChanged(const &QString)), this, SLOT(checkTemplateSelected()));
openFile.layout()->addWidget(comboBoxTemplateSelector);
También me di cuenta de que no le gustaba la forma añadí la QComboBox a la disposición del diálogo modificado (que es el segundo error). Realmente espero estar haciendo algo tonto aquí y es una tarea fácil de superar.
En respuesta al comentario de tmpearce aquí está mi código de encabezado;
#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;
};
Gracias por leer y gracias de antemano por su contribución a este desafío!
¿Hay alguna razón por la que no pueda simplemente comprobar el 'QString' devuelto y, si es necesario, mostrar un segundo cuadro de diálogo con el menú desplegable? Esto (probablemente) sería más sencillo que tratar de modificar QFileDialog para tener la funcionalidad adicional. – tmpearce
Estoy completamente de acuerdo; También creo que eso sería más guía para nuestros clientes, ya que podrían no pensar en verificar los tipos de archivos que pueden mostrarse. Sin embargo, considero que a mi empresa le gustaría hacer que acceder a tipos de archivos antiguos sea un poco difícil para que realmente se extingan lo más rápido posible. Todas las opiniones a un lado; nunca hemos tenido un estándar con estos archivos (por lo que las plantillas seleccionadas son tan necesarias) y esta nueva extensión es un intento de eso. –
Bueno, si quiere hacerlo mientras el cuadro de diálogo de archivo está abierto, eche un vistazo a las señales 'QFileDialog :: fileSelected'. Esto requerirá que no use la función estática 'getOpenFileName'; en su lugar, cree un diálogo usted mismo y conecte esta señal a una ranura desde la que puede abrir el cuadro de diálogo personalizado con el menú desplegable (si se seleccionó ese tipo de archivo), y sucederá cada vez que se haga clic en un elemento. – tmpearce