diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
commit | bd0f3345a938b35ce6a12f6150373b0955b8dd12 (patch) | |
tree | 7a520322212d48ebcb9fbe1087e7fca28b76185c /tools/designer/examples/filechooser/widget | |
download | qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.tar.gz qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.zip |
Add Qt3 development HEAD version
Diffstat (limited to 'tools/designer/examples/filechooser/widget')
4 files changed, 129 insertions, 0 deletions
diff --git a/tools/designer/examples/filechooser/widget/filechooser.cpp b/tools/designer/examples/filechooser/widget/filechooser.cpp new file mode 100644 index 0000000..4575bd4 --- /dev/null +++ b/tools/designer/examples/filechooser/widget/filechooser.cpp @@ -0,0 +1,62 @@ +#include "filechooser.h" +#include <qlineedit.h> +#include <qpushbutton.h> +#include <qfiledialog.h> +#include <qlayout.h> + +FileChooser::FileChooser( QWidget *parent, const char *name ) + : QWidget( parent, name ), md( File ) +{ + QHBoxLayout *layout = new QHBoxLayout( this ); + layout->setMargin( 0 ); + + lineEdit = new QLineEdit( this, "filechooser_lineedit" ); + layout->addWidget( lineEdit ); + + connect( lineEdit, SIGNAL( textChanged( const QString & ) ), + this, SIGNAL( fileNameChanged( const QString & ) ) ); + + button = new QPushButton( "...", this, "filechooser_button" ); + button->setFixedWidth( button->fontMetrics().width( " ... " ) ); + layout->addWidget( button ); + + connect( button, SIGNAL( clicked() ), + this, SLOT( chooseFile() ) ); + + setFocusProxy( lineEdit ); +} + +void FileChooser::setMode( Mode m ) +{ + md = m; +} + +FileChooser::Mode FileChooser::mode() const +{ + return md; +} + +void FileChooser::setFileName( const QString &fn ) +{ + lineEdit->setText( fn ); +} + +QString FileChooser::fileName() const +{ + return lineEdit->text(); +} + +void FileChooser::chooseFile() +{ + QString fn; + if ( mode() == File ) + fn = QFileDialog::getOpenFileName( lineEdit->text(), QString::null, this ); + else + fn = QFileDialog::getExistingDirectory( lineEdit->text(),this ); + + if ( !fn.isEmpty() ) { + lineEdit->setText( fn ); + emit fileNameChanged( fn ); + } +} + diff --git a/tools/designer/examples/filechooser/widget/filechooser.h b/tools/designer/examples/filechooser/widget/filechooser.h new file mode 100644 index 0000000..23272c0 --- /dev/null +++ b/tools/designer/examples/filechooser/widget/filechooser.h @@ -0,0 +1,48 @@ +#ifndef FILECHOOSER_H +#define FILECHOOSER_H + +#include <qwidget.h> +#include <qwidgetplugin.h> + +class QLineEdit; +class QPushButton; + +#ifdef FILECHOOSER_IS_WIDGET +#undef QT_WIDGET_PLUGIN_EXPORT +#define QT_WIDGET_PLUGIN_EXPORT +#endif + +class QT_WIDGET_PLUGIN_EXPORT FileChooser : public QWidget +{ + Q_OBJECT + + Q_ENUMS( Mode ) + Q_PROPERTY( Mode mode READ mode WRITE setMode ) + Q_PROPERTY( QString fileName READ fileName WRITE setFileName ) + +public: + FileChooser( QWidget *parent = 0, const char *name = 0); + + enum Mode { File, Directory }; + + QString fileName() const; + Mode mode() const; + +public slots: + void setFileName( const QString &fn ); + void setMode( Mode m ); + +signals: + void fileNameChanged( const QString & ); + +private slots: + void chooseFile(); + +private: + QLineEdit *lineEdit; + QPushButton *button; + Mode md; + +}; + +#endif diff --git a/tools/designer/examples/filechooser/widget/filechooser.pro b/tools/designer/examples/filechooser/widget/filechooser.pro new file mode 100644 index 0000000..20ea787 --- /dev/null +++ b/tools/designer/examples/filechooser/widget/filechooser.pro @@ -0,0 +1,9 @@ +TEMPLATE = app +LANGUAGE = C++ +TARGET = filechooser + +SOURCES += filechooser.cpp main.cpp +HEADERS += filechooser.h +CONFIG += qt warn_on release +DBFILE = filechooser.db +DEFINES += FILECHOOSER_IS_WIDGET diff --git a/tools/designer/examples/filechooser/widget/main.cpp b/tools/designer/examples/filechooser/widget/main.cpp new file mode 100644 index 0000000..cc39053 --- /dev/null +++ b/tools/designer/examples/filechooser/widget/main.cpp @@ -0,0 +1,10 @@ +#include <qapplication.h> +#include "filechooser.h" + +int main( int argc, char ** argv ) +{ + QApplication a( argc, argv ); + FileChooser *fc = new FileChooser; + fc->show(); + return a.exec(); +} |