Compare commits

...

2 Commits

Author SHA1 Message Date
flykhan c92c63bb96 day2: homework 第二到六题 2023-08-08 22:37:07 +08:00
flykhan c35c647b8b day2: homework 第一题 2023-08-08 22:36:21 +08:00
16 changed files with 438 additions and 0 deletions

73
homework-day2-2/.gitignore vendored Normal file
View File

@ -0,0 +1,73 @@
# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
*~
*.autosave
*.a
*.core
*.moc
*.o
*.obj
*.orig
*.rej
*.so
*.so.*
*_pch.h.cpp
*_resource.rc
*.qm
.#*
*.*#
core
!core/
tags
.DS_Store
.directory
*.debug
Makefile*
*.prl
*.app
moc_*.cpp
ui_*.h
qrc_*.cpp
Thumbs.db
*.res
*.rc
/.qmake.cache
/.qmake.stash
# qtcreator generated files
*.pro.user*
# xemacs temporary files
*.flc
# Vim temporary files
.*.swp
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.pdb
*.sln
*.suo
*.vcproj
*vcproj.*.*.user
*.ncb
*.sdf
*.opensdf
*.vcxproj
*vcxproj.*
# MinGW generated files
*.Debug
*.Release
# Python byte code
*.pyc
# Binaries
# --------
*.dll
*.exe

View File

@ -0,0 +1,31 @@
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
res.qrc

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

11
homework-day2-2/main.cpp Normal file
View File

@ -0,0 +1,11 @@
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

View File

@ -0,0 +1,97 @@
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle("简单记事");
setFixedSize(800,600);
QPixmap window_icon;
window_icon.load(":logo");
setWindowIcon(QIcon(window_icon));
menu_bar = new QMenuBar(this); // 父组件为当前 MainWindow
setMenuBar(menu_bar);
menu1 = new QMenu("文件",menu_bar); // 父组件为 menu_bar
openAction = new QAction("打开",menu1); // 父组件为 menu1
saveAction = new QAction("保存",menu1);
exitAction = new QAction("退出",menu1);
openAction->setShortcut(QKeySequence(tr("ctrl+o"))); // 快捷键绑定
saveAction->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_S));
exitAction->setShortcut(QKeySequence(tr("ctrl+q")));
connect(openAction,&QAction::triggered,[&]{ // 事件绑定
qDebug()<<"打开...";
// 打开文件
QString file_path = QFileDialog::getOpenFileName(this,"打开文件",".","Text(*.txt);;Markdown(*.md)");
QFile file(file_path);
if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){
QMessageBox::critical(this,"错误","文件路径 "+file_path+" 打开错误");
return; // 提前返回
}
QTextStream in(&file);
text_edit->setMarkdown(in.readAll());
file.close();
});
connect(saveAction,&QAction::triggered,[&]{
qDebug()<<"保存...";
QString file_path = QFileDialog::getSaveFileName(this,"保存文件",".","Markdown(*.md)");
QFile file(file_path);
if(!file.open(QIODevice::WriteOnly|QIODevice::Text)){
QMessageBox::critical(this,"错误","文件路径 "+file_path+"无法保存");
return;
}
QTextStream out(&file);
out << text_edit->toMarkdown();
file.close();
});
connect(exitAction,&QAction::triggered,[&]{
qDebug()<<"退出...";
this->close();
});
openAction->setIcon(QIcon(":open"));
saveAction->setIcon(QIcon(":save"));
menu1->addAction(openAction);
menu1->addAction(saveAction);
menu1->addAction(exitAction);
menu2 = new QMenu("编辑",menu_bar);
menu3 = new QMenu("查看",menu_bar);
menu4 = new QMenu("关于",menu_bar);
aboutAction = new QAction("关于软件",menu4);
aboutQtAction = new QAction("关于Qt",menu4);
connect(aboutAction,&QAction::triggered,[&]{
QMessageBox::about(this,"简单记事","这是一个简单的记事本");
});
connect(aboutQtAction,&QAction::triggered,[&]{
QMessageBox::aboutQt(this);
});
menu4->addAction(aboutAction);
menu4->addAction(aboutQtAction);
menu_bar->addMenu(menu1);
menu_bar->addMenu(menu2);
menu_bar->addMenu(menu3);
menu_bar->addMenu(menu4);
status_bar = new QStatusBar(this);
QLabel *left_status_label = new QLabel("行4 列19",status_bar);
QLabel *right_status_label = new QLabel("utf-8",status_bar);
status_bar->addWidget(left_status_label);
status_bar->addPermanentWidget(right_status_label); // 添加永久小部件
setStatusBar(status_bar);
text_edit = new QTextEdit("文本区占位符",this);
setCentralWidget(text_edit);
}
MainWindow::~MainWindow()
{
}

View File

@ -0,0 +1,34 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QDebug>
#include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QTextEdit>
#include <QStatusBar>
#include <QFileDialog>
#include <QFile>
#include <QMessageBox>
#include <QTextStream>
#include <QLabel>
#include <QPixmap>
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
QMenuBar *menu_bar; // 菜单栏
QMenu *menu1,*menu2,*menu3,*menu4; // 文件、编辑、查看、关于
QStatusBar *status_bar; // 状态栏
QTextEdit *text_edit; // 文本编辑(中心空间)
QAction *openAction,*saveAction,*exitAction; // 打开、保存、退出
QAction *aboutAction,*aboutQtAction; // 关于、关于Qt
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
#endif // MAINWINDOW_H

7
homework-day2-2/res.qrc Normal file
View File

@ -0,0 +1,7 @@
<RCC>
<qresource prefix="/">
<file alias="logo">images/logo.png</file>
<file alias="open">images/open.png</file>
<file alias="save">images/save.png</file>
</qresource>
</RCC>

73
homework-day2/.gitignore vendored Normal file
View File

@ -0,0 +1,73 @@
# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
*~
*.autosave
*.a
*.core
*.moc
*.o
*.obj
*.orig
*.rej
*.so
*.so.*
*_pch.h.cpp
*_resource.rc
*.qm
.#*
*.*#
core
!core/
tags
.DS_Store
.directory
*.debug
Makefile*
*.prl
*.app
moc_*.cpp
ui_*.h
qrc_*.cpp
Thumbs.db
*.res
*.rc
/.qmake.cache
/.qmake.stash
# qtcreator generated files
*.pro.user*
# xemacs temporary files
*.flc
# Vim temporary files
.*.swp
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.pdb
*.sln
*.suo
*.vcproj
*vcproj.*.*.user
*.ncb
*.sdf
*.opensdf
*.vcxproj
*vcxproj.*
# MinGW generated files
*.Debug
*.Release
# Python byte code
*.pyc
# Binaries
# --------
*.dll
*.exe

View File

@ -0,0 +1,30 @@
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp \
widget1.cpp
HEADERS += \
mainwindow.h \
widget1.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

11
homework-day2/main.cpp Normal file
View File

@ -0,0 +1,11 @@
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

View File

@ -0,0 +1,15 @@
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setFixedSize(800,600);
widget1 = new Widget1(this);
setCentralWidget(widget1);
}
MainWindow::~MainWindow()
{
}

View File

@ -0,0 +1,18 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <widget1.h>
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
Widget1 *widget1;
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
#endif // MAINWINDOW_H

15
homework-day2/widget1.cpp Normal file
View File

@ -0,0 +1,15 @@
#include "widget1.h"
Widget1::Widget1(QWidget *parent) : QWidget(parent)
{
setFixedSize(800,600);
line_edit = new QLineEdit("请输入网址: ",this);
label = new QLabel(this);
label->setText("label 占位");
line_edit->setFixedSize(800,50);
label->setFixedSize(800,540);
label->move(0,60);
}

23
homework-day2/widget1.h Normal file
View File

@ -0,0 +1,23 @@
#ifndef WIDGET1_H
#define WIDGET1_H
#include <QWidget>
#include <QLineEdit>
#include <QLabel>
class Widget1 : public QWidget
{
Q_OBJECT
private:
QLineEdit *line_edit; // 用于网址输入的单行文本编辑器
QLabel *label; // QLabel ,设置足够大
public:
explicit Widget1(QWidget *parent = nullptr);
signals:
};
#endif // WIDGET1_H