Advertisement
Guest User

qt xml

a guest
Apr 6th, 2015
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #include "mainwidget.h"
  2. #include "ui_mainwidget.h"
  3.  
  4. MainWidget::MainWidget(QWidget *parent) :
  5.     QWidget(parent),
  6.     ui(new Ui::MainWidget)
  7. {
  8.     ui->setupUi(this);
  9. }
  10.  
  11. MainWidget::~MainWidget()
  12. {
  13.     delete ui;
  14. }
  15.  
  16. void MainWidget::on_pushButton_clicked()
  17. {
  18.     QXmlStreamReader xmlReader;
  19.     xmlReader.addData(ui->textBrowser->toPlainText());
  20.  
  21.     ui->treeWidget->clear();
  22.     QStack<QTreeWidgetItem*> widgetStack;
  23.  
  24.     while (!xmlReader.atEnd()){
  25.         if (xmlReader.isStartElement()){
  26.             QStringList sl;
  27.             sl << xmlReader.name().toString();
  28.             QTreeWidgetItem* item = new QTreeWidgetItem(sl);
  29.                 if (widgetStack.count()==0){
  30.                     ui->treeWidget->addTopLevelItem(item);
  31.         }
  32.                 else {
  33.                     widgetStack.top()->addChild(item);
  34.                 }
  35.                 widgetStack.push(item);
  36.         }
  37.         if (xmlReader.isEndElement()){
  38.             widgetStack.pop();
  39.  
  40.         }
  41.  
  42.         xmlReader.readNext();
  43.     }
  44. }
  45.  
  46. void MainWidget::on_pushButton_2_clicked()
  47. {
  48.     QString filename=QFileDialog::getOpenFileName(
  49.                 this,
  50.                 tr("Otwórz plik"),
  51.                 "C:\\",
  52.                 "Pliki XML (*.xml)"
  53.                 );
  54.  
  55.     QFile file(filename);
  56.  
  57.     if(!file.open(QIODevice::ReadOnly))
  58.  
  59.         {
  60.         QMessageBox::information(0,"Błąd",file.errorString());
  61.         }
  62.  
  63.     QTextStream input(&file);
  64.  
  65.     ui->textBrowser->setText(input.readAll());
  66.  
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement