QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容

QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容,第1张

会调用scrollarea窗口显示,窗口大小能根据大小自动调整,但是最大为1024768,过大就要有滚动条来显示

mainwindow中点击“显示”调用scrollarea窗口,下面的函数是被一个按钮的槽函数调用的

void MainWindow::Show_Image_byname(char filename)

{

if(!filename || !strlen(filename))

{

return;

}

char buf[128]= {0};

strcpy(buf,SAVE_IMAGE);

strcat(buf,filename);

ScrollArea new_image = new ScrollArea();

new_image->set_image(buf);

new_image->setBackgroundRole(QPalette::Dark);

new_image->show();

return;

}

添加文件scrollareaui文件,画出一个scrollarea

在生成的scrollareah中添加私有成员QLabel

private:

Ui::ScrollArea ui;

QLabel label;

在析构函数中添加内存释放

ScrollArea::~ScrollArea()

{

delete ui;

if(label)

{

delete label;

}

}

在生成的scrollareacpp中添加显示实现函数

void ScrollArea::set_image(char filename)

{

QImage ppm = new QImage(filename);

label = new QLabel();

printf("ppm->width()=%d, ppm->height()=%d\n",ppm->width(), ppm->height()); //获取的宽度和高度

label->setPixmap(QPixmap::fromImage(ppm));

this->setWidget(label);

/设置窗口最大高度和宽度为1024768/

this->setMaximumHeight(768);

this->setMaximumWidth(1024);

this->resize(QSize( ppm->width()+5, ppm->height() +5));

return;

}

void Form::fileOpenSlot()

{

QString path=QFileDialog::getOpenFileName(this,"打开文件","/","File(txt doc html)");//设置打开的文件路径

QFile in(path);

if(!inopen(QIODevice::ReadOnly | QIODevice::Text))qDebug()<<"Can't open the file!"<<endl;//如果打开失败就输出错误信息

QTextCodec codec=QTextCodec::codecForName("UTF-8");//静太函数codecForName设置为UTF-8编码模式默认不是这个格式的!

QByteArray Line=inreadAll();

QString str=codec->toUnicode(Line);//把Line转成UTF-8赋值给str 这里是关键

ui->textEdit->append(str);

inclose();

}

你是说的不够清楚,你的意思是 textEdit 在tab1下是可写的,编写完毕后,点击按钮,跳转到tab2下 并且TextEdit变为只读的,并现实刚才编写的内容

你是准备只有一个TextEdit还是 tab1 tab2各一个?

问题很简单,你先把需求说清楚,我来帮你

我擦, 你这要能写进去才怪呢。

你obtainputname函数里的一个临时变量想要在这个函数外面使用??

// FILE fp;

// string strname;

// fp=fopen("Macrotestini","w+");

connect(lineEdit,SIGNAL(editingFinished()),this,SLOT(obtainputname()));

// const char str1=strnamec_str();

// fprintf(fp, "%s\n", str1);

void obtainputname()

{

QString strname = lineEdit->text();

FILE fp;

fp=fopen("Macrotestini","w+");

fprintf(fp, "%s\n", strnametoLatin1()data());

fclose(fp);

}

可以使用QTextEdit类定义的textChanged()信号。

这个信号会在文本发生变化时发出,可以用来检测文本发生了变化,然后执行相应的 *** 作。

例如:

void myClass::onTextEditChanged()

{

//do something

}

connect(textEdit, SIGNAL(textChanged()), this, SLOT(onTextEditChanged()));

QFilefile("xxxxtxt");if(fileopen(QIODevice::ReadOnly)){QTextStreamread(&file);while(!readatEnd()){tetedit->Append(readreadLine());}}dbInfoclose();

给你说下大概的流程吧 textedit按行读取 然后建立一个qstring的容器 读取各行数据 按钮点击后进行排序 然后把数据输出到textbrowser 其实没必要这样用 直接建立一个qtablewidget 输入内容后点击headeritem 应该直接就可以排序的

如果是 QLineEdit,则用: QString str =  ui->edit->text();

如果是 QPlainTextEdit,则用: QString str =  ui->edit->toPlainText();

如果是 QTextEdit, 获取简单文本则用: QString str =  ui->edit->toPlainText(); 获取富文本则用:QString str =  ui->edit->toHtml(); 。

以上就是关于QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容全部的内容,包括:QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容、qt怎么在textedit中显示中文、Qt中tabwidget中进行textedit的读写 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9276476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存