如何使用QTextDocumentFragment在QTextEdit中设置图像和文本的大小

埃马努埃莱

一篇文章之后,我正在使用来实现命令日志QTextEdit它的工作方式是,每次用户与用户界面进行交互时,该动作都记录在QTextEdit下面命令日志中。我成功地将图像与每个动作(例如,按下按钮,选中一个框等)相关联,但是正如您在打印屏幕下方看到的那样,该图像没有调整大小,并且每次用户执行某项操作时(而不是附加一行),图像都是放在另一个旁边:

怎么了:

错误

预期结果:

正确

下面的代码片段:

主窗口

private
    QTextEdit *mNewText;

主窗口

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
// Adding object to the DockWidget
    mNewText = new QTextEdit;
    mNewText->setReadOnly(true);
    mNewText->setStyleSheet("background-color: light grey;");
    mNewText->setMinimumHeight(50);
    mNewText->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    mDockWidget_A->setWidget(mNewText);
    addDockWidget(Qt::BottomDockWidgetArea, mDockWidget_A);
    resizeDocks({mDockWidget_A}, {200}, Qt::Horizontal);
}

void MainWindow::on_originalmgA_clicked()
{
    imageOriginlUploadA();
    QTextDocumentFragment fragment;
    fragment = QTextDocumentFragment::fromHtml("<img src='/home/path/toDesktop/working.png'>");
    mNewText->textCursor().insertFragment(fragment);
    mNewText->setVisible(true);
}

// Here we record the activity of loading images using a QPushButton

void MainWindow::imageOriginlUploadB()
{
    dir_Original_B = QFileDialog::getExistingDirectory(this, tr("Choose an image directory to load"),
                                                     filesListRight, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
    if(dir_Original_B.length() > 0){
        QImage image;
        QDir dirBObj(dir_Original_B);
        QStringList filesListRight = dirBObj.entryList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden  | QDir::AllDirs | QDir::Files, QDir::DirsFirst);
        ui->labelOrigImageB->setPixmap(QPixmap::fromImage(image.scaled(125,125,Qt::KeepAspectRatio,Qt::SmoothTransformation)));
        for ( int i = 0 ; i < filesListRight.size() ; i++ )
        {
            ui->listWidgetOriginalImgB->addItem(filesListRight.at(i));
        }
        ui->listWidgetOriginalImgB->update();
        ui->labelOrigImageB->show();
    }
}

// Here for example we record the activity of a Checkbox

void MainWindow::on_checkBoxScreen_A_toggled(bool checked)
{
    if(ui->checkBoxScreen_A->isEnabled()) {
        if(checked)
        {
            ui->checkBoxScreen_A->setText("Active");
            ui->saveToFile_A->setEnabled(true);
            ui->saveToFile_A->setStyleSheet("QPushButton{ background-color: green }");

            QTextDocumentFragment fragment;
            fragment = QTextDocumentFragment::fromHtml("<img src='/home/path/toDesktop/working.png'>");
            mNewText->textCursor().insertFragment(fragment);
            mNewText->setVisible(true);
        }
        else {
            ui->checkBoxScreen_A->setText("Inactive");
            ui->saveToFile_A->setEnabled(false);
            ui->saveToFile_A->setStyleSheet("QPushButton{ background-color: grey }");
        }
    }
}

我发现了这个有用的资源,它有助于如何处理内部图像QTextEdit但是,我没有发现任何可以清楚说明如何调整QTextDocumentFragmentaQTextEdit及其相关文本大小的内容,如下所示:

文本

如何设置图像内的大小和文字QTextEdit使用QTextDocumentFragment

任何可以提供见解的人都将大有帮助。

永乐

由于您使用的是HTML,因此必须使用标记widthheight属性img

#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextEdit w;
    QSize s{16, 16};
    for (int i=0; i<4; ++i) {
        s *= 2;
        QTextDocumentFragment fragment;
        fragment = QTextDocumentFragment::fromHtml(
                    QString(R"(<img src=':/qt-logo.png' height="%1" width="%2">)")
                    .arg(s.width())
                    .arg(s.height()));
        w.textCursor().insertFragment(fragment);
    }
    w.resize(640, 480);
    w.show();
    return a.exec();
}

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Android中设置图像的背景和文本/图像

如何在MenuItem中设置图像视图和文本

如何在WebView中设置字体大小和文本颜色?

如何在图像和文本的对齐方式随HTML中的浏览器窗口大小变化的位置旁边放置图像和文本?

如何在同一行中设置两个图像和文本

如何在 Xamarin 表单中的图像上设置徽标和文本

如何使用OpenCV在多个图像和文本的文档中查找图像位置

如何在操作栏中正确设置图像和文本?

使用Tkinter为图像和文本输入设置GUI

如何制作包含图像和文本的 4 列,并为同一行中的每列设置链接?

如何在iOS的UITextView中添加图像和文本?

如何在 Loopback/NodeJs 中同时读取图像和文本

如何在Java jFrame中动态添加图像和文本?

如何在导航栏中对齐图像和文本

如何在Flutter中删除图像和文本之间的空间

如何在网格中居中图像和文本?

如何使用 Swift 的逻辑动态显示图像和文本?

如何使用OpenCV覆盖图像和文本/形状?

如何使用 React Native 内联渲染图像和文本?

如何使用意图在pinterest上共享图像和文本

如何使用axios将图像和文本放入api

如何使用引导程序使图像和文本垂直居中?

如何使用图像和文本(html,css)创建主页按钮

使用CSS在div中定位图像和文本

如何在FragmentDialog中设置标题和文本?

如何在ListView中设置图像的大小?

如何在UIButton中设置图像大小?

使用setCompoundDrawablesWithIntrinsicBounds()时如何设置图像大小?

TabWidget中的图像将文本推离屏幕。如何使按钮更大以适合图像和文本?