Update a QStatusBar located in another class with information in a for loop
I'm currently working on a program that searches for files and everything is working as expected but I would like to make one of the functions more modular. In other words I want to turn this program into a reusable class/utility so I can use it in multiple programs. Here is my issue, in a searching function I have a foreach and inside this foreach loop I'm showing the URLs of the searched files and folders on a QStatusBar, and again everything is working fine because the QStatusBar and the forearch are in the same program and the statusBar gets updated in every loop. What I want to do is basically be able to update a QStatusBar located OUTSIDE this class and be able to show the files and folders that are currently in search.
What would be the logic I need to accomplish what I'm describing above? A getter to capture the changes? A signal and a slot?
I tried the getter method but I only get the last searched URL.
Here is a snippet of the code I'm talking about.
foreach( QString folder2, mainTargetDirectory.entryList(QDir::Dirs|QDir::NoDotAndDotDot) )
QFile nextFolder2 (mainTargetDirectory.absoluteFilePath(folder2)+ "/"+ fileToBeFound);
// this is the line of code that I would like to make modular and be able to
// update a QStatusBar located out side MainWindow.
ui->statusBar->showMessage(mainTargetDirectoryPlus.absoluteFilePath(folder2)+ "/"+ fileToBeFound,5000);
found = true;
I hope it make any sense.
Make a subclass of the status bar widget, and then add a slot that accepts a QString along with a percentage complete integer. Upgrade the widget in Qt designer to this new subclass. Now you can either call the function directly or set up a signal in our main window class and emit updates.
Wow, it's a little more complicated than what I thought but I will give it a try.
Thanks a lot for your suggestion.