请教下各位关于QString按长度分割的问题

nuptbaobao 2013-06-23 09:37:59
工作需要调用Qpainter的drawtext函数,发现很不只能,对于QString不能自动断行,QString中加入"\n"也不行,现在考虑只能把QString多次截断,然后多次调用drawtext,比如一段字符串有中英文,长度很长,在scrollview里显示也很长,需要换行显示全部,不考虑用滚动条,实在太长了,请教有什么办法可以按固定长度进行截断重组?
...全文
611 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
suros 2013-06-25
  • 打赏
  • 举报
回复
class FontMetricsEx : public QFontMetrics { public: FontMetricsEx ( const QFont & font ):QFontMetrics(font) { } FontMetricsEx ( const QFont & font, QPaintDevice * paintdevice ) :QFontMetrics(font,paintdevice) { } FontMetricsEx ( const QFontMetrics & fm ):QFontMetrics(fm) { } QString elidedTextEx ( const QString & text, Qt::TextElideMode mode, int width, int flags = 0 ) const { if (mode == Qt::ElideNone) { QString strRet = QFontMetrics::elidedText(text,Qt::ElideRight,width,flags); QChar ellipsisChar(0x2026); QString dotDotDot(QLatin1String("...")); QString elidedString = ellipsisChar; if(strRet.length() < text.length()){ if(strRet.lastIndexOf(ellipsisChar) == -1){ elidedString = dotDotDot; } strRet = strRet.left(strRet.length() -elidedString.length()); } return strRet; } else{ return QFontMetrics::elidedText(text,mode,width,flags); } } }; /////////////////////////////////////////////////////////////////////////// QFont font=_textEdit->font(); FontMetricsEx * Fmt =new FontMetricsEx (font); QString strText = _textEdit->text(); int max_text_width = 64; QStringList list; while(strText != ""){ QString text_line = Fmt->elidedTextEx(strText,Qt::ElideNone,max_text_width); list << text_line; strText = strText.right(strText.length() - text_line.length()); }
ppdayz 2013-06-25
  • 打赏
  • 举报
回复
试试 void QPainter::drawText ( int x, int y, int width, int height, int flags, const QString & text, QRect * boundingRect = 0 ) 或 void QPainter::drawText ( const QRectF & rectangle, const QString & text, const QTextOption & option = QTextOption() )
luoning1217 2013-06-25
  • 打赏
  • 举报
回复
楼上的做法常见
  • 打赏
  • 举报
回复
把QString按一个给定的字符组合,然后用split进行分割

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧