C++ 如何在QTextEdit中调整图像的大小?
如何在QTextEdit中单击图像、从图像的一角按住并调整图像大小?或者至少如何在光标/下选择图像以更改宽度和高度?以下是我如何实现的:C++ 如何在QTextEdit中调整图像的大小?,c++,qt,resize,qtextedit,C++,Qt,Resize,Qtextedit,如何在QTextEdit中单击图像、从图像的一角按住并调整图像大小?或者至少如何在光标/下选择图像以更改宽度和高度?以下是我如何实现的: void AdvancedTextEdit::resizeImage() { QTextBlock currentBlock = m_textEdit->textCursor().block(); QTextBlock::iterator it; for (it = currentBlock.begin(); !(it.atE
void AdvancedTextEdit::resizeImage()
{
QTextBlock currentBlock = m_textEdit->textCursor().block();
QTextBlock::iterator it;
for (it = currentBlock.begin(); !(it.atEnd()); ++it)
{
QTextFragment fragment = it.fragment();
if (fragment.isValid())
{
if(fragment.charFormat().isImageFormat ())
{
QTextImageFormat newImageFormat = fragment.charFormat().toImageFormat();
QPair<double, double> size = ResizeImageDialog::getNewSize(this, newImageFormat.width(), newImageFormat.height());
newImageFormat.setWidth(size.first);
newImageFormat.setHeight(size.second);
if (newImageFormat.isValid())
{
//QMessageBox::about(this, "Fragment", fragment.text());
//newImageFormat.setName(":/icons/text_bold.png");
QTextCursor helper = m_textEdit->textCursor();
helper.setPosition(fragment.position());
helper.setPosition(fragment.position() + fragment.length(),
QTextCursor::KeepAnchor);
helper.setCharFormat(newImageFormat);
}
}
}
}
}
void AdvancedTextEdit::resizeImage()
{
QTextBlock currentBlock=m_textEdit->textCursor().block();
QTextBlock::迭代器;
对于(it=currentBlock.begin();!(it.atEnd());+it)
{
QTextFragment=it.fragment();
if(fragment.isValid())
{
if(fragment.charFormat().isImageFormat())
{
QTextImageFormat newImageFormat=fragment.charFormat().toImageFormat();
QPair size=ResizeImageDialog::getNewSize(这是newImageFormat.width(),newImageFormat.height());
newImageFormat.setWidth(size.first);
newImageFormat.setHeight(size.second);
if(newImageFormat.isValid())
{
//QMessageBox::about(这个“片段”,Fragment.text());
//newImageFormat.setName(“:/icons/text_bold.png”);
QTextCursor helper=m_textEdit->textCursor();
setPosition(fragment.position());
helper.setPosition(fragment.position()+fragment.length(),
QTextCursor::KeepAnchor);
setCharFormat(newImageFormat);
}
}
}
}
}
当然,我还实现了ResizeImageDialog对话框的getNewSize(这是newImageFormat.width(),newImageFormat.height());函数,该函数获取图像的当前大小并允许用户更改大小,然后将图像的新大小作为QPair返回。这并不难做到。有关该对话框的实现,请参见。以上是非常常见的要求,但在Qt中实现并不直接。QTextEdit中图像的大小调整帧是一个棘手的部分。我使用不同的方法。我在QTextEdit顶部绘制一个小部件,作为图像周围的橡皮筋。为此,我做了以下工作: