QTextEdit 实现 QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函数
来源:互联网 发布:韵达快递软件 编辑:程序博客网 时间:2024/05/16 06:12
啰嗦
在设置 QLineEdit 默认提示语和最大可输入长多时,可以很方便的调用自带的 setPlaceholderText() 和 setMaxLength ()函数来实现,可是在用到多行文本输入的地方要用到QTextEdit ,但是 QTextEdit 并未自带这个两个函数,那么要实现这个功能只能自己另外写了。
实现
实现起来也很简单,主要是处理 focusInEvent 和 focusOutEvent 俩个事件,另外需要设置默认占位符的颜色为灰色,由于QTextEdit 支持 html ,可以很方便的使用 setHtml 来实现。
private:intmaxLength;//最大输入长度QString placeholderText;void setPlaceholderText(QString text){placeholderText=text;if(toPlainText().isEmpty())//font-family:'微软雅黑'; color:#7f7f7f;">输入内容不超过200字setHtml(QString("<font color=\"#7f7f7f\">%1</font>").arg(placeholderText));}protected:void focusInEvent(QFocusEvent *e){if (!placeholderText.isNull()){QString t=toPlainText();if (t.isEmpty() || t==placeholderText) clear();}QTextEdit::focusInEvent(e);}void focusOutEvent(QFocusEvent *e){if (!placeholderText.isNull()){if (toPlainText().isEmpty())setHtml(QString("<font color=\"#7f7f7f\">%1</font>").arg(placeholderText));}
效果如下:
而限制输入最大长度,在子类中设置成员变量保存最大长度值,以及在父类中响应信号 textChanged()
//父类响应槽函数,将文本限制在设置的最大长度之内void parentWidget::solt_textEditChanged(){if (NULL != pTextEdit){QString textContent = pTextEdit->toPlainText(); int length = textContent.count(); int maxLength = pTextEdit->getMaxLength(); // 最大字符数if(length > maxLength) { int position = pTextEdit->textCursor().position(); QTextCursor textCursor = pTextEdit->textCursor(); textContent.remove(position-(length-maxLength), length-maxLength); pTextEdit->setText(textContent); textCursor.setPosition(position-(length-maxLength)); pTextEdit->setTextCursor(textCursor); } }}//调用if (0 == pTextEdit){pTextEdit = new QMyTextEdit(this);}pTextEdit->setMaxLength(300);//要在connect 之前设置connect( pTextEdit ,SIGNAL( textChanged() ), this, SLOT( solt_textEditChanged() ) );
下载
类源码:0分下载
阅读全文
0 0
- QTextEdit 实现 QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函数
- QLineEdit,QTextEdit
- Qt中的QLineEdit、QTextEdit和QPla…
- Qt 文本框类QLineEdit和QTextEdit
- Qt入门-文本框类QLineEdit和QTextEdit
- Qt入门-文本框类QLineEdit和QTextEdit
- Qt入门-文本框类QLineEdit和QTextEdit
- qt中qlineedit和qtextedit右键菜单翻译成中文
- Qt5中部分自带控件菜单(QLineEdit、QTextEdit右键菜单)的汉化
- Qt5中部分自带控件菜单(QLineEdit、QTextEdit右键菜单)的汉化
- 005 如何获取QlineEdit/QtextEdit上的文本?如何输出文本到文件?
- QLineEdit几个常用的实现
- qt5把qt_zh_CN.qm加载了,但QTextEdit的右键菜单仍然是英文,而QLineEdit的倒是中文。怎样设置使得QTextEdit的右键菜单是中文
- QT 之 QLineEdit 类 的常用函数
- Qt中如何实现QTextEdit中文字的单个删除 和 连续删除
- QlineEdit和QCalendarWidget做的简单日历
- QLineEdit的setInputMask和正则表达式冲突
- QTextEdit 实现gif动画
- iOS tabbar点击动画效果实现
- 手机适配
- [BZOJ2730][HNOI2012]矿厂搭建--tarjan
- kafka在zookeeper中对应目录
- SSM中log4j.properties配置
- QTextEdit 实现 QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函数
- sql 行转列
- 回传
- po命令
- sklearn.preprocessing.LabelBinarizer
- SSM项目,使用拦截器进行权限控制
- [已解决]vagrant未开启系统虚拟化错误.virtualization VT-x/AMD-V
- http请求状态码
- 虚拟驾驶环境搭建(四)