A fájlkezelés egy fontos része az alkalmazásfejlesztésnek, és a Qt lehetőséget kínál erre is. Fájlokat a Qt segítségével a következőképp lehet kezelni, a dokumentációban további részleteket és lehetőségeket találhatsz ezekkel kapcsolatosan:
- QFile: fájlok olvasását és írását teszi lehetővé. Ez egy könnyen használható osztály, amely egyszerű módját kínálja a fájlok kezelésének. Például:
QFile file("be.txt"); // ebben az esetben a fájt a build mappában kell legyen
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
// hiba esetén
QMessageBox::warning(0, "Hiba", file.errorString());
return;
} else {
QTextStream in(&file);
QString myText = in.readAll();
...
file.close();
}
- QDir: segítségével könnyedén navigálhatunk a mappastruktúrák között, fájlokat lehet listázni, keresni és módosítani a Qt keretrendszerben. Például:
QDir dir(".");
QStringList files = dir.entryList(QDir::Files);
foreach (QString file, files) {
qDebug() << "Fájl:" << file;
}
- QFileDialog: ez egy előre elkészített dialógusablak, amely lehetővé teszi a felhasználók számára, hogy kiválasszák a fájlokat és mappákat a rendszeren. Például:
QString filename = QFileDialog::getOpenFileName(nullptr, "Select a file", ".", "All files (*.*);;Text files (*.txt)");
if (!filename.isEmpty()) {
qDebug() << "Kiválasztott fájl:" << filename;
}
A Qt lehetővé teszi, hogy az alkalmazásainkat menüsávval gazdagítsuk. A menürendszer kulcsfontosságú elemei a menüsáv (QMenuBar
), a menük (QMenu
) és az akciók (QAction
). Ezek az elemek lehetővé teszik az alkalmazások számára, hogy strukturált és könnyen navigálható felhasználói felületet biztosítsanak.
A menüsáv a felső részen helyezkedik el az alkalmazásablakban, és általában az alkalmazás főmenüit tartalmazza, például a "File", "Edit", "View" stb. menüket. A menüsávban található menük kattintható elemek, amelyek további almenüket vagy akciók sorait tartalmazhatják. A menük olyan listák, amelyek tartalmazhatnak más menüket vagy akciókat (például egy "File" menü tartalmazhatja az "Open File", "Save File As...", "Exit" stb. akciókat). Az akciók olyan feladatok vagy műveletek, amelyeket a felhasználó az alkalmazáson belül végezhet el, például fájl megnyitása, mentése, szöveg másolása stb.
Mindez kódban:
MenuApp::MenuApp(QWidget *parent) : QMainWindow(parent) {
QMenuBar *menuBar = new QMenuBar(this);
setMenuBar(menuBar);
QMenu *fileMenu = menuBar()->addMenu("File");
QAction *openAction = fileMenu->addAction("Open");
connect(openAction, &QAction::triggered, this, &MenuApp::myOpenFileHandler);
}
-
Írjunk egy szöveges fájlkereső alkalmazást, megy egy adott könyvtárban megkeresi az összes állományt és visszatéríti azokat melyek tartalmazzák a keresett karakterláncot. Ha a felhasználó nem specifikálja (üres) a keresési karakterláncot, térítsük vissza az összes állományt. Az állományok nevét és méretét jelenítsük meg tábálázat formájában.
- A könyvtár kiválasztásához használjuk
QFileDialog
osztályt illetve, aQDir::currentPath()
függvényt az aktuális könyvtár lekéréséhez. - A könyvtárak kezelésére, illetve a könyvtár struktúra bejárásához használjuk a beépített
QDir
ésQDirIterator
osztályokat. - A szöveges fájlok feldolgozásához, tartalmuk beolvasásához a
QFile
ésQTextStream
osztályokat használjuk. Mivel a fájlok feldolgozása sok időt vehet igénybe, aQProgressDialog
segítségével jelezzük a felhasználó felé, hány százalékát dolgoztuk fel a fájloknak, hol tartunk. - A keresés eredményét egy
QTableWidget
objektum segítségével jelenítjük meg, a fájlokról információkat (pl. méret) aQFileInfo
segítségével kérhetünk le. - Egy lehetséges megoldás, lépésről lépésre
- A könyvtár kiválasztásához használjuk
-
Készítsünk egy CSV állományokat kezelő alkalmazást! A felhasználó legyen képes kinyitni egy CSV állományt, amelyet a felületen egy QTableWidget objektum keretén belül megtekinthet.
- Készítsünk az alkalmazásnak egy QMenuBar menüsávot! Hozzunk létre egy QMenu menüt, amelyet nevezzünk
File
-nak! A menüben legyen egy QAction menüpont:Open File...
, mely gombnyomásra kinyit egy QFileDialog állománymegnyitó dialógust, amely csak CSV állományokat támogat (állítsuk be a filterét)! - Az ablak tartalmazzon egy QTableWidget táblázatot, amely megjeleníti a CSV adatait!
- A CSV állomány kiválasztása után az alkalmazás olvassa be a CSV állományból az első sort és állítsa be aszerint a táblázat oszlopait! Ezután olvassa be az állományból az adatokat tartalmazó sorokat is, és tegye be őket a táblázatba!
- A táblázat ne legyen módosítható!
- Készítsünk az alkalmazásnak egy QMenuBar menüsávot! Hozzunk létre egy QMenu menüt, amelyet nevezzünk
-
Készítsünk egy motivációs idézeteket megjelenítő alkalmazást! Az alkalmazás indításakor olvassuk be az idézeteket egy állományból. Automatikusan válasszunk ki az idézetek közül egyet, és mutassuk meg azt a felhasználónak. Legyen a felületen egy gomb, amivel új idézetet generálhatunk. Vigyázzunk arra, hogy ne generáljuk ki ugyanazokat az idézeteket egymás után. Díszítsük fel az alkalmazásunkat stylesheetekkel. Példa idézetek találhatóak ebben az állományban.