Advertisement
Guest User

MDI

a guest
Aug 7th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <QDialog>
  2. #include <QSqlQuery>
  3. #include <QSqlQueryModel>
  4. #include <QSqlTableModel>
  5. #include <QMdiArea>
  6. #include <QtWidgets>
  7. #include "login.h"
  8. namespace Ui {
  9. class backup;
  10. }
  11.  
  12. class backup : public QDialog
  13. {
  14.     Q_OBJECT
  15.  
  16. public:
  17.     explicit backup(QMdiArea *md,QWidget *parent = nullptr);
  18.  
  19.     ~backup();
  20.     QVBoxLayout *vboxleft;
  21.     QHBoxLayout *hboxMain;
  22.     QVBoxLayout *vboxright;
  23.     QHBoxLayout *hboxBtnHight;
  24.     QHBoxLayout *hboxBtnLow;
  25.     QPushButton *close;
  26.     QLabel *text;
  27.     QLabel *text1;
  28.     QPushButton *btnAdd;
  29.      QTableView *view;
  30.      QFileSystemModel *model;
  31.      QDir Rootdir;
  32.      QPushButton* dell;
  33.       QFrame *wgt;
  34.  
  35. signals:
  36.       void repaint();
  37.  
  38. public slots:
  39.  
  40.     void createWindow();
  41.  
  42.     void addDisk();
  43.  
  44.     void restoreDisk();
  45.  
  46.     void labelClik(QString st);
  47.  
  48.     void moveTo(const QModelIndex &index);
  49.  
  50.     void dellDisk();
  51.  
  52.     //void closeEvent(QCloseEvent *event);
  53.  
  54.  
  55. private:
  56.     Ui::backup *ui;
  57.     QMdiArea *MdiArea;
  58.  
  59. };
  60.  
  61. #endif // BACKUP_H
  62.  
  63.  
  64.  
  65. #include <QFileSystemModel>
  66. #include <QDir>
  67. #include <QDirModel>
  68. #include <QSettings>
  69. #include <QFileDialog>
  70. #include <QDesktopServices>
  71. #include <QFile>
  72. backup::backup(QMdiArea *md, QWidget *parent) :
  73.     QDialog(parent),
  74.     ui(new Ui::backup)
  75. {
  76.        ui->setupUi(this);
  77.  
  78. MdiArea=md;
  79.  
  80.  
  81.  
  82.    createWindow();
  83.  
  84.  
  85. }
  86.  
  87. backup::~backup()
  88. {
  89.     delete ui;
  90.  
  91. }
  92.  
  93. void backup::createWindow()
  94. {
  95.     hboxMain = new QHBoxLayout;
  96.     vboxleft = new QVBoxLayout;
  97.     vboxright = new QVBoxLayout;
  98.     hboxBtnLow = new QHBoxLayout;
  99.     hboxBtnHight = new QHBoxLayout;
  100.     btnAdd = new QPushButton;
  101.     close = new QPushButton;
  102.     text = new QLabel;
  103.     text1 = new QLabel;
  104.     view = new QTableView;
  105.     vboxleft->setSpacing(10);
  106.     btnAdd->setIcon(QIcon("://plus.png"));
  107.     btnAdd->setIconSize(QSize(25,25));
  108.     text1->setText("Добавить диск");
  109.     text->setText("Информация о дисках");
  110.  
  111.     hboxMain->setContentsMargins(10,10,10,10);
  112.     hboxMain->setSpacing(20);
  113.     hboxMain->addLayout(vboxleft);
  114.     hboxMain->addLayout(vboxright);
  115.     vboxleft->setContentsMargins(10,10,10,10);
  116.     vboxleft->addLayout(hboxBtnHight);
  117.     hboxBtnHight->addWidget(text1);
  118.     hboxBtnHight->addWidget(btnAdd);
  119.     vboxleft->addWidget(text);
  120.     vboxright->addWidget(view);
  121.     vboxright->addLayout(hboxBtnLow);
  122.     hboxBtnLow->addWidget(close);
  123.     setLayout(hboxMain);
  124.    model = new QFileSystemModel;
  125.    setStyleSheet("font-size: 14px;");
  126.    connect(btnAdd,SIGNAL(clicked()),this,SLOT(addDisk()));
  127.    connect(view,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(moveTo(QModelIndex)));
  128. //   Navi* n = new Navi(MdiArea);
  129. //   connect(this,SIGNAL(repaint()),n,SLOT(repaintBackup()));
  130.    restoreDisk();
  131. }
  132.  
  133. void backup::addDisk()
  134. {
  135.  
  136.     QFileDialog diag;
  137.     diag.setFileMode(QFileDialog::Directory);
  138.     diag.exec();
  139.     QSettings settings("backup.ini", QSettings::IniFormat);
  140.     settings.beginGroup("disk");
  141.     settings.setValue(diag.directory().dirName(), diag.directory().path());
  142.     settings.endGroup();
  143.  
  144.  
  145.  
  146. }
  147.  
  148. void backup::restoreDisk()
  149. {
  150.     QSettings settings("backup.ini", QSettings::IniFormat);
  151.     if(settings.allKeys().isEmpty()){
  152.     }else{
  153.     settings.beginGroup("disk");
  154.     QStringList key = settings.allKeys();
  155.     for(int i=0; i<key.size();i++){
  156.     qDebug()<<settings.value(key.at(i)).toString();
  157.     wgt = new QFrame();
  158.     wgt->setObjectName(QString::number(i));
  159.     wgt->setFrameStyle(QFrame::Raised | QFrame::Sunken);
  160.     wgt->setLineWidth(3);
  161.     wgt->setStyleSheet("background-color: #FFFFFF; border: 1px solid #CCCCCC;\
  162.                              border-radius: 4px; color: #555555;\
  163.                              ");
  164.  
  165.  
  166.     vboxleft->addWidget(wgt);
  167.     QHBoxLayout* hbox = new QHBoxLayout;
  168.     wgt->setLayout(hbox);
  169.     QLabel* disk = new Clickable();
  170.     disk->setText(settings.value(key.at(i),"").toString());
  171.     hbox->addWidget(disk);
  172.     hbox->setSpacing(10);
  173.     dell = new QPushButton;
  174.     //dell->setText(QString::number(i));
  175.       dell->setObjectName(QString::number(i));
  176.     dell->setIcon(QIcon("://clear.png"));
  177.     dell->setIconSize(QSize(25,25));
  178.     dell->setFixedSize(37,33);
  179.     dell->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
  180.     hbox->addWidget(dell);
  181.     connect(disk,SIGNAL(clicked(QString)),this,SLOT(labelClik(QString)));
  182.     connect(dell,SIGNAL(clicked()),this,SLOT(dellDisk()));
  183.      QStorageInfo hdd(settings.value(key.at(i)).toString());
  184.      if(hdd.isReady() && hdd.isValid()){
  185.      qDebug()<< hdd.bytesTotal()/1000/1000 <<"MB";
  186.      qDebug()<< hdd.bytesAvailable()/1000/1000 <<"MB";
  187.     }
  188.      }
  189.     settings.endGroup();
  190.     }
  191.     vboxleft->addStretch(1);
  192. }
  193.  
  194. void backup::labelClik(QString st)
  195. {
  196.  
  197.  
  198.     Rootdir.setPath(st);
  199.     model->setFilter(QDir::AllEntries);
  200.         model->setRootPath(Rootdir.path());
  201.         view->setModel(model);
  202.  
  203.         view->setRootIndex(model->index(Rootdir.path()));
  204.  
  205.  
  206.  
  207. }
  208.  
  209. void backup::moveTo(const QModelIndex &index)
  210. {
  211. QModelIndex currentDiscount  = view->currentIndex();
  212.    qDebug()<<view->model()->data(view->model()->index(currentDiscount.row(),0),0).toString();
  213.    QListView* listviw = (QListView*)sender();
  214.    QFileInfo fileinfo= model->fileInfo(index);
  215.    if(fileinfo.fileName()==".."){
  216.        QDir dir = fileinfo.dir();
  217.        dir.cdUp();
  218.        listviw->setRootIndex( model->index(dir.absolutePath()));
  219.    }
  220.    else if(fileinfo.fileName()=="."){
  221.       listviw->setRootIndex(model->index(Rootdir.path()));
  222.    }
  223.    else if(fileinfo.isDir()){
  224.        listviw->setRootIndex(index);
  225.    }
  226. }
  227.  
  228. void backup::dellDisk()
  229. {
  230.     int k = dell->objectName().toInt();
  231.     QSettings settings("backup.ini", QSettings::IniFormat);
  232.     QStringList keys = settings.allKeys();
  233.     settings.remove(keys.at(k));
  234.    // вот тут нужно вызвать метод для перерисовки окна (update and repaint не  работают)
  235.     // Mdiarea->update()(repaint()) тоже не робит
  236.     //перерисовка subvindow откуда я это вызвал крашит всю прогу
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement