naghim / FFT-lab07

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Labor 07

Fájlkezelés

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:

  1. 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();
    }
  1. 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;
    }
  1. 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;
    }

Qt menüsáv, menük és akciók

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);
}

Feladatok

  1. Í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, a QDir::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 és QDirIterator osztályokat.
    • A szöveges fájlok feldolgozásához, tartalmuk beolvasásához a QFile és QTextStream osztályokat használjuk. Mivel a fájlok feldolgozása sok időt vehet igénybe, a QProgressDialog 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) a QFileInfo segítségével kérhetünk le.
    • Egy lehetséges megoldás, lépésről lépésre findfiles-example
  2. 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ó!
  3. 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.

About