I think I already finished the app lmao

This commit is contained in:
Lncvrt committed 2026-02-25 21:50:07 -07:00
1 parent bfbd4891ec
commit e51903b73a
3 files changed
+83 -15

No files matched your search

+1
View File
@@ -11,6 +11,7 @@ CTestTestfile.cmake
_deps _deps
CMakeUserPresets.json CMakeUserPresets.json
build/ build/
.DS_Store
# CLion # CLion
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
+9 -4
View File
@@ -1,11 +1,16 @@
cmake_minimum_required(VERSION 4.2.3) cmake_minimum_required(VERSION 4.2.3)
project(textedit) project(Textedit)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
find_package(Qt6 REQUIRED COMPONENTS Core Widgets) find_package(Qt6 REQUIRED COMPONENTS Widgets)
add_executable(textedit src/main.cpp) add_executable(Textedit MACOSX_BUNDLE src/main.cpp)
target_link_libraries(textedit PRIVATE Qt6::Core Qt6::Widgets) set_target_properties(Textedit PROPERTIES
WIN32_EXECUTABLE TRUE
)
target_link_libraries(Textedit PRIVATE Qt6::Widgets)
+73 -11
View File
@@ -1,18 +1,80 @@
#include <QtCore/QFile>
#include <QtCore/QTextStream>
#include <QtWidgets/QApplication> #include <QtWidgets/QApplication>
#include <QtWidgets/QFileDialog>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QMessageBox>
#include <QtWidgets/QTextEdit> #include <QtWidgets/QTextEdit>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget> class Editor : public QMainWindow {
Q_OBJECT
QTextEdit *edit;
QString currentPath;
public:
Editor() {
edit = new QTextEdit(this);
setCentralWidget(edit);
auto *fileMenu = menuBar()->addMenu("File");
fileMenu->addAction("Open", QKeySequence::Open, this, &Editor::open);
fileMenu->addAction("Save", QKeySequence::Save, this, &Editor::save);
fileMenu->addAction("Save As", QKeySequence::SaveAs, this, &Editor::saveAs);
showMaximized();
}
private:
bool write(const QString &filePath) {
QFile file(filePath);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QMessageBox::warning(this, {}, file.errorString());
return false;
}
QTextStream(&file) << edit->toPlainText();
return true;
}
private slots:
void open() {
QString filePath =
QFileDialog::getOpenFileName(this, {}, {}, "All Files (*)");
if (filePath.isEmpty())
return;
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QMessageBox::warning(this, {}, file.errorString());
return;
}
currentPath = filePath;
edit->setPlainText(QTextStream(&file).readAll());
}
void save() {
if (currentPath.isEmpty())
saveAs();
else
write(currentPath);
}
void saveAs() {
QString filePath =
QFileDialog::getSaveFileName(this, {}, {}, "All Files (*)");
if (filePath.isEmpty())
return;
if (write(filePath))
currentPath = filePath;
}
};
#include "main.moc"
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
QApplication app(argc, argv); QApplication app(argc, argv);
QWidget window; Editor w;
QVBoxLayout *layout = new QVBoxLayout(&window);
QTextEdit *textEdit = new QTextEdit();
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
layout->addWidget(textEdit);
window.showMaximized();
return app.exec(); return app.exec();
} }