• 5152阅读
  • 3回复

关于QTextEdit的setTabStopWidth [复制链接]

上一主题 下一主题
离线shj123
 
只看楼主 倒序阅读 楼主  发表于: 2009-09-13
我subclass了QTextEdit,然后在构造函数里用setCurrentFont设置字体和大小,载入一个文档后显示正常,但把内容删完,光标回到起始位置后,edit的字体和大小就变小了??

绞尽脑汁奋战一个晚上没搞定,不知道是什么问题,后来搜到了一位仁兄的一个解决方案,用setStyleSheet,试了下,果然可以!但到用setTabStopWidth设定tab宽度时,发现又不对了,无论我setStyleSheet的字体大小怎么变,fontMetrics.width(" ")就是不变!造成的效果就是,tabstop比预定义位置要小,而且经常stop在某个字符中间

2个问题:
1、为啥用setCurrentFont会出现字体还原,就是我上面说的那种情况;
2、请问通过setStyleSheet改变字体和大小后,怎么获得正确的当前字体大小pixel来传给setTabStopWidth呢?



学了2年c++想真正开始做点东西,无奈qt之路挫折重重,跪求高人相助!!

[code]
{ // 我的edit构造函数
    ......
    setStyleSheet("QTextEdit {font-family:'Courier New'; font-size:13px;}");
    int i;
    this->setTabStopWidth((i = QFontMetrics(currentFont).width(" ")) * 4);
    printf("%d", i); // 这里无论font-size怎么改都不会变,直接13*4出来的效果也不对
    ......
}
[/code]
离线dbzhang800

只看该作者 1楼 发表于: 2009-09-13
如果你不用setCurrentFont,而是使用
void setFont ( const QFont & )
会怎么样呢?
离线shj123
只看该作者 2楼 发表于: 2009-09-15
一开始就是用的setFont不行,不过今天重试后,发现居然奇迹般地ok了?!
离线shj123
只看该作者 3楼 发表于: 2009-09-15
感谢dbzhang800
快速回复
限100 字节
 
上一个 下一个