📄 inputstring.cpp
字号:
/****************************************************************************** * * $Id: inputstring.cpp,v 1.2 2001/03/19 19:27:39 root Exp $ * * Copyright (C) 1997-2001 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * */#include "inputstring.h"#include "pagewidget.h"#include "pixmaps.h"#include <qlabel.h>#include <qlayout.h>#include <qlineedit.h>#include <qwindowsstyle.h>#include <qcstring.h>#include <qpushbutton.h>#include <qfiledialog.h>#include <qcombobox.h>#include <qtooltip.h>InputString::InputString( const QString & label, PageWidget *parent, QCString &s, StringMode m ) : QWidget( parent->getLayout() ), str(s), sm(m), m_values(0), m_index(0){ if (m==StringFixed) { QHBoxLayout *layout = new QHBoxLayout( this, 5); lab = new QLabel( label, this ); lab->setMinimumSize( lab->sizeHint() ); layout->addWidget( lab ); com = new QComboBox( this ); layout->addWidget( com ); layout->addStretch( 1 ); le=0; br=0; layout->activate(); setMinimumSize( sizeHint() ); } else { QGridLayout *layout = new QGridLayout( this, 1, m==StringFree ? 1 : 3, 5 ); lab = new QLabel( label, this ); lab->setMinimumSize( lab->sizeHint() ); layout->addWidget( lab,0,0 ); le = new QLineEdit( this ); le->setMinimumSize( le->sizeHint() ); le->setText( s ); layout->addWidget( le,0,1 ); if (m==StringFile || m==StringDir) { QPixmap pixmap = QPixmap(m==StringFile ? file_xpm : folder_xpm ); br = new QPushButton( this ); br->setPixmap(pixmap); br->setMinimumSize( br->sizeHint() ); if (m==StringFile) QToolTip::add(br,"Browse to a file"); else QToolTip::add(br,"Browse to a folder"); layout->addWidget( br,0,2 ); } else { br=0; } com=0; layout->activate(); setMinimumSize( sizeHint() ); } if (le) connect( le, SIGNAL(textChanged(const QString&)), this, SLOT(textChanged(const QString&)) ); if (br) connect( br, SIGNAL(clicked()), this, SLOT(browse()) ); if (com) connect( com, SIGNAL(activated(const QString &)), this, SLOT(textChanged(const QString &)) ); parent->addWidget(this);}InputString::~InputString(){ if (m_values) delete m_values;}void InputString::textChanged(const QString &s){ if (str!=(const char *)s) { str = s; emit changed(); }}void InputString::setEnabled(bool state){ lab->setEnabled(state); if (le) le->setEnabled(state); if (br) br->setEnabled(state); if (com) com->setEnabled(state);}void InputString::browse(){ if (sm==StringFile) { QString fileName = QFileDialog::getOpenFileName(); if (!fileName.isNull()) { le->setText( fileName ); if (str!=(const char *)le->text()) { str = le->text(); emit changed(); } } } else // sm==StringDir { QString dirName = QFileDialog::getExistingDirectory(); if (!dirName.isNull()) { le->setText( dirName ); if (str!=(const char *)le->text()) { str = le->text(); emit changed(); } } }}void InputString::clear(){ le->setText(""); if (!str.isEmpty()) { emit changed(); str = ""; }}void InputString::addValue(const char *s){ if (sm==StringFixed) { if (m_values==0) m_values = new QDict<int>; m_values->setAutoDelete(TRUE); m_values->insert(s,new int(m_index++)); com->insertItem(s); }}void InputString::init(){ if (sm==StringFixed) { int *itemIndex = m_values->find(str); if (itemIndex) { com->setCurrentItem(*itemIndex); } else { com->setCurrentItem(0); } } else { le->setText(str); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -