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
|
_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
@@ -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
@@ -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();
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user