connettere 2 form
Unsolved
Italian
-
Vi spiego la situazione. Nel main principale ho un label nel quale vorrei scrivere la directory che ricavo da un Qtreeview di un secondo form. il problema è che non capisco come eseguire questa operazione.
il label si chiama LB_source. alla pressione del pulsante PB_select_dir vorrei eseguire la connessione che mi copi la variabile pathdir nella LB_source.mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include <frm_select.h> #include <ui_frm_select.h> #include <QTreeView> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); update_log("Start Application."); ui->tabWidget->setCurrentIndex(0); // Set the stat tab page header label ui->tableWidget->horizontalHeader()->setStretchLastSection(true); // Last colum auto maximize to conteiner qDebug()<<qApp->property("my_path"); connect(newform,&QPushButton::clicked,ui->LB_source); } void MainWindow::update_log(QString commento) { QDateTime time = QDateTime::currentDateTime(); QString printtime = time.toString("dd/MM/yy hh:mm:ss"); ui->tableWidget->insertRow(ui->tableWidget->rowCount()); ui->tableWidget->setItem(ui->tableWidget->rowCount()- 1, col_data, new QTableWidgetItem(printtime)); ui->tableWidget->setItem(ui->tableWidget->rowCount()- 1, col_commento, new QTableWidgetItem(commento)); ui->BA_source->setValue(0); ui->BA_destination->setValue(0); found_driver(); } void MainWindow::found_driver() { qDebug()<< "Run: " << __FUNCTION__; QString testo="prova"; ui->listWidget->addItem(testo); QDir directory; directory.setCurrent("C:/"); if (directory.exists()) { qDebug()<< "The directory exist."; int n = directory.count() ; qDebug()<< "file presenti: " << n - 2; qDebug()<< "Dimensione: " << directory.Size << "Byte"; QStorageInfo storage(qApp->applicationDirPath()); if (storage.isValid() && storage.isReady()) { qDebug() << "Name:" << storage.name(); qDebug() << "Display name:" << storage.displayName(); qDebug() << "Device:" << storage.device(); qDebug() << "Root path:" << storage.rootPath(); qDebug() << "File system type:" << storage.fileSystemType(); qDebug() << "Is valid?" << (storage.isValid() ? "yes" : "no"); qDebug() << "Is root?" << (storage.isRoot() ? "yes" : "no"); qDebug() << "Is ready?" << (storage.isReady() ? "yes" : "no"); qDebug() << "Is read only?" << (storage.isReadOnly() ? "yes" : "no"); qDebug() << "Bytes available:" << storage.bytesAvailable(); qDebug() << "Bytes free:" << storage.bytesFree(); qDebug() << "Bytes total:" << storage.bytesTotal() << endl; } for (int i =0; i<n; i++) { QString nome = directory[i]; if ((nome=='.') || ( nome =="..")) { } else { qDebug()<< "indice " << i << ":" <<directory[i] << "dim:" << directory[i].size(); } } } else { qDebug()<< "The directory no exist."; } QFileInfo file; if(QFileInfo("/Users/diego/Desktop/result.txt").exists()) { //The file exists qDebug()<< "File log.txt found."; } else { //The file doesn't exist qDebug()<< "File log.txt not found"; } } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_PB_analize_clicked(bool checked) { if (checked) { qDebug()<<"Press button analize"; update_log("Select Analize operation."); } } void MainWindow::on_TB_sync_clicked(bool checked) { if (checked) { ui->TB_backup->setChecked(false); ui->TB_restore->setChecked(false); } update_log("Select Sync operation."); } void MainWindow::on_TB_backup_clicked(bool checked) { if (checked) { ui->TB_sync->setChecked(false); ui->TB_restore->setChecked(false); } update_log("Select BackUp operation."); } void MainWindow::on_TB_restore_clicked(bool checked) { if (checked) { ui->TB_backup->setChecked(false); ui->TB_sync->setChecked(false); } update_log("Select Restore operation."); } void MainWindow::on_PB_add_source_clicked() { newform = new frm_select(this); newform ->setModal(true); // Open only this form newform ->show(); } void MainWindow::on_actionItaliano_triggered() { ui->actionInglese->setChecked(false); } void MainWindow::on_actionInglese_triggered() { ui->actionItaliano->setChecked(false); }
frm_select.cpp
#include "frm_select.h" #include "ui_frm_select.h" #include <mainwindow.h> #include <QTreeView> frm_select::frm_select(QWidget *parent): QDialog(parent), ui(new Ui::frm_select) { ui->setupUi(this); qDebug()<<"Open select directory"; dirmodel = new QDirModel(this); dirmodel->setReadOnly(false); // Maker file system writable dirmodel->setSorting(QDir::DirsFirst | QDir::IgnoreCase | QDir::Name); // Set visualization tree ui->tree_source->setModel(dirmodel); QModelIndex index = dirmodel->index("C:/"); ui->tree_source->expand(index); ui->tree_source->scrollTo(index); ui->tree_source->setCurrentIndex(index); ui->tree_source->resizeColumnToContents(0); // Resize the colum to contests } frm_select::~frm_select() { delete ui; } void frm_select::found_driver() { qDebug()<<"Run found_driver function."; QFileSystemModel *tree_source = new QFileSystemModel(this); tree_source->setRootPath(QDir::rootPath()); ui->tree_source->setModel(tree_source); ui->tree_source->resizeColumnToContents(0); // Resize the colum to contests foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) { qDebug()<< storage.name(); qDebug() << "Root path:" << storage.rootPath(); // ui->listWidget->addItem(storage.name()); } } QString frm_select::on_PB_select_dir_clicked() { qDebug()<<"Press button select dir"; ui->tree_source->resizeColumnToContents(0); // Resize the colum to contests QModelIndex index = ui->tree_source->currentIndex(); if (!index.isValid()) return ""; QString pathdir = dirmodel->filePath(index); qDebug()<< pathdir; return dirmodel->filePath(index); } void frm_select::on_PB_make_dir_clicked() { qDebug()<<"Press button make directory"; QModelIndex index =ui->tree_source->currentIndex(); if (!index.isValid()) return; QString newdir = QInputDialog::getText(this,"New directory name","Enter new directory"); if (newdir.isEmpty()) return; dirmodel->mkdir(index,newdir); } void frm_select::on_PB_remove_clicked() { qDebug()<<"Press button remove"; QModelIndex index =ui->tree_source->currentIndex(); int reply = QMessageBox::question(this,tr("Confirm remove"), "Confirm remove?",QMessageBox::Yes,QMessageBox::No); if (reply==QMessageBox::Yes) { if (!index.isValid()) return; if (dirmodel->fileInfo(index).isDir()) { dirmodel->rmdir(index); } else { dirmodel->remove(index); } } }