diff options
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 000000000..c082b9430 --- /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( TQWidget *parent, const char *name ) + : TQWidget( parent, name ), md( File ) +{ + TQHBoxLayout *layout = new TQHBoxLayout( this ); + layout->setMargin( 0 ); + + lineEdit = new TQLineEdit( this, "filechooser_lineedit" ); + layout->addWidget( lineEdit ); + + connect( lineEdit, SIGNAL( textChanged( const TQString & ) ), + this, SIGNAL( fileNameChanged( const TQString & ) ) ); + + button = new TQPushButton( "...", 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 TQString &fn ) +{ + lineEdit->setText( fn ); +} + +TQString FileChooser::fileName() const +{ + return lineEdit->text(); +} + +void FileChooser::chooseFile() +{ + TQString fn; + if ( mode() == File ) + fn = TQFileDialog::getOpenFileName( lineEdit->text(), TQString::null, this ); + else + fn = TQFileDialog::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 000000000..cff0af536 --- /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 TQLineEdit; +class TQPushButton; + +#ifdef FILECHOOSER_IS_WIDGET +#undef QT_WIDGET_PLUGIN_EXPORT +#define QT_WIDGET_PLUGIN_EXPORT +#endif + +class QT_WIDGET_PLUGIN_EXPORT FileChooser : public TQWidget +{ + Q_OBJECT + + Q_ENUMS( Mode ) + Q_PROPERTY( Mode mode READ mode WRITE setMode ) + Q_PROPERTY( TQString fileName READ fileName WRITE setFileName ) + +public: + FileChooser( TQWidget *parent = 0, const char *name = 0); + + enum Mode { File, Directory }; + + TQString fileName() const; + Mode mode() const; + +public slots: + void setFileName( const TQString &fn ); + void setMode( Mode m ); + +signals: + void fileNameChanged( const TQString & ); + +private slots: + void chooseFile(); + +private: + TQLineEdit *lineEdit; + TQPushButton *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 000000000..20ea7872b --- /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 000000000..2742db74c --- /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 ) +{ + TQApplication a( argc, argv ); + FileChooser *fc = new FileChooser; + fc->show(); + return a.exec(); +} |