• 5239阅读
  • 6回复

[提问]如何实现编辑qtextedit的时候将其发出的信号即时的响应到qwebview上? [复制链接]

上一主题 下一主题
在线snolkmg
 

只看楼主 倒序阅读 楼主  发表于: 2015-03-11
关键词: QTextEditQWebView
求助,如何实现编辑qtextedit的时候将其发出的信号即时的响应到qwebview上?
我现在能实现webview预览textedit上的内容,但每次必须点击添加的preview这个动作,也就是预览按钮,比如这样:



这是预览动作的代码:
  1. void MainWindow::preview()
  2. {
  3.     QString txtContent ="";
  4.     if (ui->textEdit->toPlainText().contains("<!--?xml"))
  5.         txtContent=ui->textEdit->toPlainText()
  6.                     .replace("<!--?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?-->",
  7.                                                        "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n\n");
  8.     else
  9.         txtContent =ui->textEdit->toPlainText();
  10.     ui->textEdit->setPlainText(txtContent);
  11.     ui->webView->setHtml(txtContent,baseUrl);
  12. }


现在想做到,在修改textedit的同时,内容也会即时的显示在webview上,实现“即改即见”的效果,该怎么实现?





离线shiziyang

只看该作者 1楼 发表于: 2015-03-11
用这个信号
void QTextEdit::textChanged () [signal]
在线snolkmg

只看该作者 2楼 发表于: 2015-03-12
回 shiziyang 的帖子
shiziyang:用这个信号
void QTextEdit::textChanged () [signal]
 (2015-03-11 18:04) 

请问具体该如何使用呢?我在程序中加了这一句:
connect(ui->textEdit,SIGNAL(textChanged()),this,SLOT(preview()));
程序每次打开后都会停止响应
在线snolkmg

只看该作者 3楼 发表于: 2015-03-12
我把这部分内容从主程序中单独拿了出来,现在贴一下代码,请大神们看一下问题出在哪儿

  1. //mainwindow.h
  2. #ifndef MAINWINDOW_H
  3. #define MAINWINDOW_H
  4. #include <QMainWindow>
  5. #include <QtGui>
  6. #include <QtWidgets>
  7. #include <QUrl>
  8. namespace Ui {
  9. class MainWindow;
  10. }
  11. class MainWindow : public QMainWindow
  12. {
  13.     Q_OBJECT
  14. public:
  15.     explicit MainWindow(QWidget *parent = 0);
  16.     ~MainWindow();
  17. private:
  18.     Ui::MainWindow *ui;
  19.     QUrl baseUrl;
  20. private slots:
  21.     void preview();
  22. };
  23. #endif // MAINWINDOW_H






  1. //mainwindow.cpp
  2. #include "mainwindow.h"
  3. #include "ui_mainwindow.h"
  4. MainWindow::MainWindow(QWidget *parent) :
  5.     QMainWindow(parent),
  6.     ui(new Ui::MainWindow)
  7. {
  8.     ui->setupUi(this);
  9.     ui->dockWidget->setMinimumSize(200,150);
  10. //    connect(ui->actionPre,SIGNAL(triggered()),this,SLOT(preview()));
  11.     connect(ui->textEdit,SIGNAL(textChanged()),this,SLOT(preview()));
  12. }
  13. MainWindow::~MainWindow()
  14. {
  15.     delete ui;
  16. }
  17. void MainWindow::preview()
  18. {
  19.     QString txtContent ="";
  20.     if (ui->textEdit->toPlainText().contains("<!--?xml"))
  21.         txtContent=ui->textEdit->toPlainText()
  22.                     .replace("<!--?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?-->",
  23.                                                        "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n\n");
  24.     else
  25.         txtContent =ui->textEdit->toPlainText();
  26.     ui->textEdit->setPlainText(txtContent);
  27.     ui->webView->setHtml(txtContent,baseUrl);
  28. }




lizi.rar (3 K) 下载次数:0

离线dbzhang800

只看该作者 4楼 发表于: 2015-03-12
ui->textEdit->setPlainText(txtContent); !!
在线snolkmg

只看该作者 5楼 发表于: 2015-03-12
回 dbzhang800 的帖子
dbzhang800:ui->textEdit->setPlainText(txtContent); !! (2015-03-12 10:44) 

请问这句话有什么问题吗?
在线snolkmg

只看该作者 6楼 发表于: 2015-03-12
回 dbzhang800 的帖子
dbzhang800:ui->textEdit->setPlainText(txtContent); !! (2015-03-12 10:44) 

感谢,原来用settext时信号不发射,我把这句话注释掉就好了
快速回复
限100 字节
 
上一个 下一个