QT:多行输入框的实现
来源:互联网 发布:淘宝中国制造 编辑:程序博客网 时间:2024/05/18 03:45
在QT中,利用QIuputDialog可以轻易地输入一段字符串,但这个方法有两个缺点:
1:不能直接输入多段字符
2:不能在accept或reject的时候作一些额外的处理,
1:不能直接输入多段字符
2:不能在accept或reject的时候作一些额外的处理,
我自定义了MultiInputDialog类,可以很好的解决这个问题。
思路:该程序很简单,就多作解释了
截图:
上代码:
#include <QtGui>class MultiInputDialog : public QDialog{Q_OBJECTprivate:const int m_GroupCount;QLabel **m_Labels;QLineEdit **m_LineEdits;QPushButton *m_OKButton;QPushButton *m_CancelButton;public:MultiInputDialog(int count, QWidget *parent = 0);virtual ~MultiInputDialog();void SetLabelTexts(const QStringList &listText);void SetOneLabelText(int index, const QString &text);QString GetOneText(int index);QStringList GetAllTexts();//为了让多组输入框看起来整齐些,所以我固定了QLabel的宽度void SetLabelsWidth(int width);//使用正则表达式来限制输入的字符void SetLineEditRegExp(int index, QRegExp regExp);//请根据需要重写这两个函数virtual void accept() { QDialog::accept(); }virtual void reject() { QDialog::reject(); }};MultiInputDialog::MultiInputDialog(int count, QWidget *parent): QDialog(parent), m_GroupCount(count){QVBoxLayout *layout = new QVBoxLayout;QHBoxLayout *subLayout;m_Labels = new QLabel*[m_GroupCount];m_LineEdits = new QLineEdit*[m_GroupCount];//设计界面for(int i=0; i<m_GroupCount; i++){subLayout = new QHBoxLayout;m_LineEdits[i] = new QLineEdit(this);m_Labels[i] = new QLabel(this);subLayout->addWidget(m_Labels[i]);subLayout->addWidget(m_LineEdits[i]);layout->addLayout(subLayout);}m_OKButton = new QPushButton( tr("OK"), this );m_CancelButton = new QPushButton( tr("Cancel"), this );subLayout = new QHBoxLayout;subLayout->addStretch();subLayout->addWidget(m_OKButton);subLayout->addWidget(m_CancelButton);layout->addLayout(subLayout);setLayout(layout);connect(m_OKButton, SIGNAL(clicked()), this, SLOT(accept()));connect(m_CancelButton, SIGNAL(clicked()), this, SLOT(reject()));}MultiInputDialog::~MultiInputDialog(){delete m_LineEdits;delete m_Labels;}void MultiInputDialog::SetLabelTexts(const QStringList &listText){for(int i=0; i<listText.size(); i++){if( i >= m_GroupCount )break;m_Labels[i]->setText( listText.at(i) );}}void MultiInputDialog::SetOneLabelText(int index, const QString &text){m_Labels[index]->setText(text);}void MultiInputDialog::SetLabelsWidth(int width){for(int i=0; i<m_GroupCount; i++)m_Labels[i]->setFixedWidth(width);}void MultiInputDialog::SetLineEditRegExp(int index, QRegExp regExp){QValidator *validator = new QRegExpValidator(regExp, this);m_LineEdits[index]->setValidator( validator ); }QString MultiInputDialog::GetOneText(int index){return m_LineEdits[index]->text();}QStringList MultiInputDialog::GetAllTexts(){QStringList list;for(int i=0; i<m_GroupCount; i++){list.push_back( m_LineEdits[i]->text() );}return list;}#include "main.moc"int main(int argc, char **argv){QApplication app(argc, argv);MultiInputDialog dialog(5);QStringList list;list << "One: " << "Two: " << "Three: " << "Four: " << "Five: ";dialog.SetLabelTexts(list);dialog.SetLabelsWidth(30);dialog.show();return app.exec();}
- QT:多行输入框的实现
- QT:IP地址输入框的实现
- Qt实现IP输入框
- Qt实现IP输入框
- Qt实现的IP地址输入控件
- 取巧实现cocos2d-x输入框的多行输入
- qt实现点击输入框弹出输入面板和改变窗口的位置
- [Qt] IP地址输入框实现
- Qt 编辑框的输入限制
- Qt(二)--- 使用Qt完成QQ登录界面的输入文本框的实现
- qt输入框
- qt输入框 (ww)
- 实现多个输入框的dialog
- QT的多语言实现
- QT的密码输入框以及国际化的一些问题
- Qt实现区分扫码输入和用户输入
- 用QT实现的用于显示输入IP的LineEdit控件
- 用QT实现的用于显示输入IP的LineEdit控件
- Top 150 Questions - 1.8
- FreeSwitch Channel variable 对照表
- 大学总结之影响我最深的十本书
- linux下c编程之内存共享shemget函数的实现及案例-bmi体重身高测试1
- wcf timeoutexception
- QT:多行输入框的实现
- WCF + vs2005 Video Note
- Area
- __builtin_constant_p
- FileExport
- myEclipse中Tomcat的端口设置
- Java中的instanceof关键字
- Merge标签使用
- bugfree 邮箱设置