Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QDialog>
- #include <QSqlQuery>
- #include <QSqlQueryModel>
- #include <QSqlTableModel>
- #include <QMdiArea>
- #include <QtWidgets>
- #include "login.h"
- namespace Ui {
- class backup;
- }
- class backup : public QDialog
- {
- Q_OBJECT
- public:
- explicit backup(QMdiArea *md,QWidget *parent = nullptr);
- ~backup();
- QVBoxLayout *vboxleft;
- QHBoxLayout *hboxMain;
- QVBoxLayout *vboxright;
- QHBoxLayout *hboxBtnHight;
- QHBoxLayout *hboxBtnLow;
- QPushButton *close;
- QLabel *text;
- QLabel *text1;
- QPushButton *btnAdd;
- QTableView *view;
- QFileSystemModel *model;
- QDir Rootdir;
- QPushButton* dell;
- QFrame *wgt;
- signals:
- void repaint();
- public slots:
- void createWindow();
- void addDisk();
- void restoreDisk();
- void labelClik(QString st);
- void moveTo(const QModelIndex &index);
- void dellDisk();
- //void closeEvent(QCloseEvent *event);
- private:
- Ui::backup *ui;
- QMdiArea *MdiArea;
- };
- #endif // BACKUP_H
- #include <QFileSystemModel>
- #include <QDir>
- #include <QDirModel>
- #include <QSettings>
- #include <QFileDialog>
- #include <QDesktopServices>
- #include <QFile>
- backup::backup(QMdiArea *md, QWidget *parent) :
- QDialog(parent),
- ui(new Ui::backup)
- {
- ui->setupUi(this);
- MdiArea=md;
- createWindow();
- }
- backup::~backup()
- {
- delete ui;
- }
- void backup::createWindow()
- {
- hboxMain = new QHBoxLayout;
- vboxleft = new QVBoxLayout;
- vboxright = new QVBoxLayout;
- hboxBtnLow = new QHBoxLayout;
- hboxBtnHight = new QHBoxLayout;
- btnAdd = new QPushButton;
- close = new QPushButton;
- text = new QLabel;
- text1 = new QLabel;
- view = new QTableView;
- vboxleft->setSpacing(10);
- btnAdd->setIcon(QIcon("://plus.png"));
- btnAdd->setIconSize(QSize(25,25));
- text1->setText("Добавить диск");
- text->setText("Информация о дисках");
- hboxMain->setContentsMargins(10,10,10,10);
- hboxMain->setSpacing(20);
- hboxMain->addLayout(vboxleft);
- hboxMain->addLayout(vboxright);
- vboxleft->setContentsMargins(10,10,10,10);
- vboxleft->addLayout(hboxBtnHight);
- hboxBtnHight->addWidget(text1);
- hboxBtnHight->addWidget(btnAdd);
- vboxleft->addWidget(text);
- vboxright->addWidget(view);
- vboxright->addLayout(hboxBtnLow);
- hboxBtnLow->addWidget(close);
- setLayout(hboxMain);
- model = new QFileSystemModel;
- setStyleSheet("font-size: 14px;");
- connect(btnAdd,SIGNAL(clicked()),this,SLOT(addDisk()));
- connect(view,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(moveTo(QModelIndex)));
- // Navi* n = new Navi(MdiArea);
- // connect(this,SIGNAL(repaint()),n,SLOT(repaintBackup()));
- restoreDisk();
- }
- void backup::addDisk()
- {
- QFileDialog diag;
- diag.setFileMode(QFileDialog::Directory);
- diag.exec();
- QSettings settings("backup.ini", QSettings::IniFormat);
- settings.beginGroup("disk");
- settings.setValue(diag.directory().dirName(), diag.directory().path());
- settings.endGroup();
- }
- void backup::restoreDisk()
- {
- QSettings settings("backup.ini", QSettings::IniFormat);
- if(settings.allKeys().isEmpty()){
- }else{
- settings.beginGroup("disk");
- QStringList key = settings.allKeys();
- for(int i=0; i<key.size();i++){
- qDebug()<<settings.value(key.at(i)).toString();
- wgt = new QFrame();
- wgt->setObjectName(QString::number(i));
- wgt->setFrameStyle(QFrame::Raised | QFrame::Sunken);
- wgt->setLineWidth(3);
- wgt->setStyleSheet("background-color: #FFFFFF; border: 1px solid #CCCCCC;\
- border-radius: 4px; color: #555555;\
- ");
- vboxleft->addWidget(wgt);
- QHBoxLayout* hbox = new QHBoxLayout;
- wgt->setLayout(hbox);
- QLabel* disk = new Clickable();
- disk->setText(settings.value(key.at(i),"").toString());
- hbox->addWidget(disk);
- hbox->setSpacing(10);
- dell = new QPushButton;
- //dell->setText(QString::number(i));
- dell->setObjectName(QString::number(i));
- dell->setIcon(QIcon("://clear.png"));
- dell->setIconSize(QSize(25,25));
- dell->setFixedSize(37,33);
- dell->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
- hbox->addWidget(dell);
- connect(disk,SIGNAL(clicked(QString)),this,SLOT(labelClik(QString)));
- connect(dell,SIGNAL(clicked()),this,SLOT(dellDisk()));
- QStorageInfo hdd(settings.value(key.at(i)).toString());
- if(hdd.isReady() && hdd.isValid()){
- qDebug()<< hdd.bytesTotal()/1000/1000 <<"MB";
- qDebug()<< hdd.bytesAvailable()/1000/1000 <<"MB";
- }
- }
- settings.endGroup();
- }
- vboxleft->addStretch(1);
- }
- void backup::labelClik(QString st)
- {
- Rootdir.setPath(st);
- model->setFilter(QDir::AllEntries);
- model->setRootPath(Rootdir.path());
- view->setModel(model);
- view->setRootIndex(model->index(Rootdir.path()));
- }
- void backup::moveTo(const QModelIndex &index)
- {
- QModelIndex currentDiscount = view->currentIndex();
- qDebug()<<view->model()->data(view->model()->index(currentDiscount.row(),0),0).toString();
- QListView* listviw = (QListView*)sender();
- QFileInfo fileinfo= model->fileInfo(index);
- if(fileinfo.fileName()==".."){
- QDir dir = fileinfo.dir();
- dir.cdUp();
- listviw->setRootIndex( model->index(dir.absolutePath()));
- }
- else if(fileinfo.fileName()=="."){
- listviw->setRootIndex(model->index(Rootdir.path()));
- }
- else if(fileinfo.isDir()){
- listviw->setRootIndex(index);
- }
- }
- void backup::dellDisk()
- {
- int k = dell->objectName().toInt();
- QSettings settings("backup.ini", QSettings::IniFormat);
- QStringList keys = settings.allKeys();
- settings.remove(keys.at(k));
- // вот тут нужно вызвать метод для перерисовки окна (update and repaint не работают)
- // Mdiarea->update()(repaint()) тоже не робит
- //перерисовка subvindow откуда я это вызвал крашит всю прогу
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement