相关文章推荐
大方的沙发  ·  Android OpenGL ...·  8 月前    · 
发怒的黄瓜  ·  sqlalchemy转Json - ...·  1 年前    · 

目前我个人在做项目中遇到的问题就是,在禁止掉水平,锤直的滑动条的情况下,输入的文本超出编辑框的时候,下面的文本会将上面的文本顶出编辑框的大小,显示不全, 具体解决,首先设置编辑器的属性为不能换行( this->setLineWrapMode(QTextEdit::NoWrap);)或者一直检查光标所在行的字符串的长度不能大于编辑器的宽度,因为QTextEdit控件是在输入的字符串的长度大于控件的宽度的时候,会自动的换行,这样处理,就是需要用户手动的敲回车键,进行换行,如此一来,就可以统计到目前输入的行数,从而达到控制文本的目的,下面是主要的代码:

在QTextEdit的信号textChanged()的槽函数中做一下操作:

int lineCount = this->document()->lineCount();

QTextDocument* textDocument = this->document();//获取指定textEdit位置

QTextCursor cursor;
cursor = this->textCursor();
int lineNumber = cursor.blockNumber();//获取光标所在列用cursor.columnNumber();
QTextBlock textBlock = textDocument->findBlockByLineNumber(lineNumber);//通过行号找到指定行 数据块
QString selectLine = textBlock.text();//将得到的数据存入一个字符串。
QFontMetrics fm(m_textFont);//字体大小
int pixelsWide = fm.width(selectLine); //根据字体大小计算光标所在行的字符串的长度
if (pixelsWide > this->width() - 22 || lineCount > 文本编辑器最大的行数)
{
this->setPlainText(m_textSub);
this->undo();
/*设置光标位置在最后*/
this->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
}
else if(pixelsWide <= this->width() - 22(临界值,避免文本的长度达到编辑器的长度时,自动换行) && lineCount <= 文本编辑器最大的行数)
{
m_textSub = this->toPlainText();
}

目前我个人在做项目中遇到的问题就是,在禁止掉水平,锤子的滑动条的情况下,输入的文本查出编辑框的时候,下面的文本会将上面的文本顶出编辑框的大小,显示不全, 具体解决,首先设置编辑器的属性为不能换行(this-&gt;setLineWrapMode(QTextEdit::NoWrap);)或者一直检查光标所在行的字符串的长度不能大于编辑器的宽度,因为QTextEdit控件是在输入的字符串的长度大于控件的宽度的时候,会自动的换行,这样处理,就是需要用户手动的敲回车键,进行换行,如此一来,就可以统计到目前输入的行. 效果如下图所示: 之前尝试了一些其他方法,效果并不理想,比如:根据 edit 的滚动 的当前位置和最大值的差值,重新设置 edit 的高度,达到滚动 消失,高度自适应的效果。 最终解决方案:通过根据内容重新调整 edit 中document的大小,设置 edit 的高度,不需要进行数值计算了。 核心代码: //之前的 Edit 高度 int oldHeight = t ext Edit ->height(); //调整文字高度并设置
QT ext Edit 输入 的文字长度过长, QT ext Edit 就会出现滚动 。如果不想出现滚动 ,而想 QT ext Edit 的高度随着文字的增加或减少而改变。 //widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QDebug> #include < QT ext Edit > 完成了什么: 一个简单的菜单栏,带有标准的“文件”和“编辑”菜单 一个T ext Area小部件,用户可以在其中编写一些限制为140个字符的 文本 (达到限制时-StatusBar上会 显示 相对消息) 工具栏,允许用户修改选定的 文本 StatusBar的其他信息,例如:。 项目名称。 一个用户。 用户 输入 的字符数 状态栏, 显示 常规消息(菜单操作悬停和140限制通知)以及一些其他信息 它可以记住M
实现代码如下: m_ListWidget = new QListWidget(m_backgroud); m_ListWidget->setViewMode(QListView::ListMode); m_ListWidget->setFlow(QListView::LeftToRight);//将从左到...
QScrollArea 最主要的方法在于, 简单来说就是设置画布的意思,通常我们在使用的时候需要先把需要的控件放到一个画布里。而QScrollArea 就类似于我们拿着一个放大镜去观察这个画布。所以想要出现滚动 ,画布的大小一定要比QScrollArea 大! 以下代码示例: 最后,我们还可以对滚动 禁用 。例如 禁用 横向滚动 : 效果图待添加: