在上一篇文章之后,我正在使用来实现命令日志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
。但是,我没有发现任何可以清楚说明如何调整QTextDocumentFragment
aQTextEdit
及其相关文本大小的内容,如下所示:
如何设置图像内的大小和文字QTextEdit
使用QTextDocumentFragment
?
任何可以提供见解的人都将大有帮助。
由于您使用的是HTML,因此必须使用标记的width
和height
属性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] 删除。
我来说两句