I think I already finished the app lmao
This commit is contained in:
3 files changed
+83
-15
No files matched your search
@@ -11,6 +11,7 @@ CTestTestfile.cmake
|
||||
_deps
|
||||
CMakeUserPresets.json
|
||||
build/
|
||||
.DS_Store
|
||||
|
||||
# CLion
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
|
||||
+9
-4
@@ -1,11 +1,16 @@
|
||||
cmake_minimum_required(VERSION 4.2.3)
|
||||
|
||||
project(textedit)
|
||||
project(Textedit)
|
||||
|
||||
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
@@ -1,18 +1,80 @@
|
||||
#include <QtCore/QFile>
|
||||
#include <QtCore/QTextStream>
|
||||
#include <QtWidgets/QApplication>
|
||||
#include <QtWidgets/QFileDialog>
|
||||
#include <QtWidgets/QMainWindow>
|
||||
#include <QtWidgets/QMenuBar>
|
||||
#include <QtWidgets/QMessageBox>
|
||||
#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[]) {
|
||||
QApplication app(argc, argv);
|
||||
QWidget window;
|
||||
QVBoxLayout *layout = new QVBoxLayout(&window);
|
||||
|
||||
QTextEdit *textEdit = new QTextEdit();
|
||||
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
layout->setSpacing(0);
|
||||
layout->addWidget(textEdit);
|
||||
window.showMaximized();
|
||||
Editor w;
|
||||
return app.exec();
|
||||
}
|
||||
Reference in new issue
Block a user