怎样让QRadioButton的文字Wrap?

chenjinming 2009-12-10 10:10:20
QLabel让文字Wrap(这个我也不知道怎么用中文说,反正就是文字太长了就会换行的效果),QRadioButton怎么弄?
...全文
190 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dext 2009-12-10
  • 打赏
  • 举报
回复
ui->radioButton->setText("sdfasdf\nsdfasdfasdf");

C 语言 的 换行符 \n
chenjinming 2009-12-10
  • 打赏
  • 举报
回复
恩,对,确实不用split,按照你上面的想法我该写了这个函数,简洁了不少:
QString modifyText(const QString &str){
static int wraplen = 54;
QString result = str;
int index = result.indexOf(" ");
int preIndex = 0, startIndex = 0;
int length;
while (index > 0){
length = index - startIndex;
if (length > wraplen){
result[preIndex]='\n';
startIndex = preIndex + 1;
length = 0;
}
preIndex = index;
index = result.indexOf(" ", index + 1);
}
return result;
}
dext 2009-12-10
  • 打赏
  • 举报
回复
哈哈,函数写得不错,
不过,其实 说白了,你的程序 就是 讲 字符串中的 某些空格 换成 \n
何必 split 呢?还有 如果 你最后 加的那个空格 刚好是 第 55 个,怎么办?

所以,只需要 scan 一编字符串,加一个 最近空格 位置记录,适时的替换成 \n
就完全可以搞定。
chenjinming 2009-12-10
  • 打赏
  • 举报
回复
恩,果然是这样,看来学到东西还没有融会贯通啊~ 不过我接受的是一个从其他地方提取出来的QString,而且要根据单词进行切割,根据“\n”的换行符,我写了下面这个函数,解决了我的问题:

QString modifyText(const QString &str){
static int wraplen = 54;
QString tmp = str;
QString result;
int strLen = tmp.length();
if (strLen <= wraplen)
return tmp;
QStringList list = tmp.split(" ");
QString line;
for (int i = 0; i < list.count(); i++){
if ((line.length() + list[i].length()) > wraplen){
result += line + "\n";
line.clear();
}
line += list[i] + " ";
}
if (!line.isEmpty())
result += line;
return result;
}

16,227

社区成员

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

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