界面完成
parent
25daaecbc0
commit
b262eca43c
|
@ -14,7 +14,7 @@ find_package(Qt5 COMPONENTS
|
||||||
Widgets
|
Widgets
|
||||||
REQUIRED)
|
REQUIRED)
|
||||||
|
|
||||||
add_executable(officeassistant main.cpp mainwindow.cpp mainwindow.h mainwindow.ui mainwindowlayout.cpp mainwindowlayout.h mainwindowlayout.ui navbar.cpp navbar.h navbar.ui MyButton.cpp MyButton.h buttonstruct.h)
|
add_executable(officeassistant WIN32 main.cpp mainwindow.cpp mainwindow.h mainwindow.ui mainwindowlayout.cpp mainwindowlayout.h mainwindowlayout.ui navbar.cpp navbar.h navbar.ui MyButton.cpp MyButton.h buttonstruct.h globalvariables.h mainscreen.cpp mainscreen.h mainscreen.ui)
|
||||||
target_link_libraries(officeassistant
|
target_link_libraries(officeassistant
|
||||||
Qt5::Core
|
Qt5::Core
|
||||||
Qt5::Gui
|
Qt5::Gui
|
||||||
|
|
58
MyButton.cpp
58
MyButton.cpp
|
@ -1,15 +1,16 @@
|
||||||
//
|
//
|
||||||
// Created by HW on 2023/07/26.
|
// Created by HW on 2023/07/26.
|
||||||
//
|
//
|
||||||
|
#define TEXT_SIZE 7
|
||||||
#include "MyButton.h"
|
#include "MyButton.h"
|
||||||
MyButton::MyButton(QString logo,QString text,int width,int height,QWidget *parent) : QPushButton(parent) {
|
MyButton::MyButton(QString logo,QString text,int width,int height,QList<MyButton *> *buttons,QWidget *parent) : QPushButton(parent) {
|
||||||
|
this->buttons=buttons;
|
||||||
this->width2=width;
|
this->width2=width;
|
||||||
this->height2=height;
|
this->height2=height;
|
||||||
this->text=text;
|
this->text=text;
|
||||||
this->logo=new QImage;
|
this->logo=new QImage;
|
||||||
this->logo->load(logo);
|
this->logo->load(logo);
|
||||||
this->setStyleSheet("background-color:#333332;");
|
this->setStyleSheet("background-color:#333332;/*border:none;*/");
|
||||||
}
|
}
|
||||||
|
|
||||||
MyButton::~MyButton() {
|
MyButton::~MyButton() {
|
||||||
|
@ -20,15 +21,52 @@ void MyButton::paintEvent(QPaintEvent *e) {
|
||||||
QPushButton::paintEvent(e);
|
QPushButton::paintEvent(e);
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
painter.setRenderHint(QPainter::Antialiasing);
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
int logo_width=width()/2;
|
int logo_width=width()/3;
|
||||||
int logo_x=width()/4;
|
int logo_x=width()/3;
|
||||||
|
int logo_y=(height()-logo_width)/3;
|
||||||
|
setContentsMargins(0,0,0,0);
|
||||||
QFont ft;
|
QFont ft;
|
||||||
ft.setPixelSize(7);
|
ft.setPixelSize(TEXT_SIZE);
|
||||||
int text_x=0;
|
int text_x=(width()-TEXT_SIZE*text.length()*scale*2)/2;
|
||||||
int text_y=(logo_width+logo_x);
|
int text_y=(logo_width+logo_y+10);
|
||||||
QRectF logo_rect(logo_x, logo_x, logo_width, logo_width);
|
QRectF logo_rect(logo_x, logo_y, logo_width, logo_width);
|
||||||
QRectF text_rect(text_x,text_y,7*text.length(),7);
|
QRectF text_rect(text_x,text_y, TEXT_SIZE*text.length()*scale*2,TEXT_SIZE*scale*2);
|
||||||
painter.setPen(QColor("#FFFFFF"));
|
painter.setPen(QColor("#FFFFFF"));
|
||||||
painter.drawImage(logo_rect, *logo);
|
painter.drawImage(logo_rect, *logo);
|
||||||
painter.drawText(text_rect, Qt::AlignCenter, text);
|
painter.drawText(text_rect, Qt::AlignCenter, text);
|
||||||
|
if(checked){
|
||||||
|
QRectF rect(0, this->height()-6, this->width(), 5);
|
||||||
|
painter.fillRect(rect, QColor("#FFFFFF"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
QSize MyButton::sizeHint() const {
|
||||||
|
return QSize(width2,height2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyButton::enterEvent(QEvent *event) {
|
||||||
|
QWidget::enterEvent(event);
|
||||||
|
this->setStyleSheet("background-color:#646464;border:none;");
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyButton::leaveEvent(QEvent *event) {
|
||||||
|
QWidget::leaveEvent(event);
|
||||||
|
this->setStyleSheet("background-color:#333332;border:none;");
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyButton::mousePressEvent(QMouseEvent *event) {
|
||||||
|
QPushButton::mousePressEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyButton::mouseReleaseEvent(QMouseEvent *event) {
|
||||||
|
QPushButton::mouseReleaseEvent(event);
|
||||||
|
for(auto button:*buttons){
|
||||||
|
button->setChecked(false);
|
||||||
|
button->update();
|
||||||
|
}
|
||||||
|
if(checked)
|
||||||
|
checked=false;
|
||||||
|
else
|
||||||
|
checked=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
32
MyButton.h
32
MyButton.h
|
@ -10,21 +10,42 @@
|
||||||
#include <QtSvg/QtSvg>
|
#include <QtSvg/QtSvg>
|
||||||
#include <QtSvg/QSvgWidget>
|
#include <QtSvg/QSvgWidget>
|
||||||
#include <QtSvg/QSvgRenderer>
|
#include <QtSvg/QSvgRenderer>
|
||||||
|
#include "globalvariables.h"
|
||||||
|
|
||||||
class MyButton: public QPushButton{
|
class MyButton: public QPushButton{
|
||||||
public:
|
public:
|
||||||
MyButton(QString logo,QString text,int width,int height,QWidget *parent=nullptr);
|
MyButton(QString logo,QString text,int width,int height,QList<MyButton *> *buttons,QWidget *parent=nullptr);
|
||||||
~MyButton() override;
|
~MyButton() override;
|
||||||
QString getText(){
|
QString getText(){
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
QSize sizeHint() const override {
|
|
||||||
return QSize(width2/2,height2/2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
QSize sizeHint() const override;
|
||||||
|
void setChecked(bool checked){
|
||||||
|
this->checked=checked;
|
||||||
|
}
|
||||||
|
QSize getLogicalSize() const {
|
||||||
|
if(scale>=1.25){
|
||||||
|
return QSize(width2,height2);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return QSize(width2,height2);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
int setSize(int width,int height,int logicalwidth,int logicalheight){
|
||||||
|
this->width2=width;
|
||||||
|
this->height2=height;
|
||||||
|
this->logicalwidth=logicalwidth;
|
||||||
|
this->logicalheight=logicalheight;
|
||||||
|
}
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *e) override;
|
void paintEvent(QPaintEvent *e) override;
|
||||||
|
void enterEvent(QEvent *event) override;
|
||||||
|
void leaveEvent(QEvent *event) override;
|
||||||
|
void mousePressEvent(QMouseEvent *event) override;
|
||||||
|
void mouseReleaseEvent(QMouseEvent *event) override;
|
||||||
private:
|
private:
|
||||||
|
QList<MyButton *> *buttons;
|
||||||
QImage *logo;
|
QImage *logo;
|
||||||
QLabel *logo_label;
|
QLabel *logo_label;
|
||||||
QLabel *text_label;
|
QLabel *text_label;
|
||||||
|
@ -33,6 +54,9 @@ private:
|
||||||
QString text;
|
QString text;
|
||||||
int width2;
|
int width2;
|
||||||
int height2;
|
int height2;
|
||||||
|
int logicalwidth;
|
||||||
|
int logicalheight;
|
||||||
|
bool checked=false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
//
|
||||||
|
// Created by HW on 2023/07/27.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef OFFICEASSISTANT_GLOBALVARIABLES_H
|
||||||
|
#define OFFICEASSISTANT_GLOBALVARIABLES_H
|
||||||
|
extern double scale;
|
||||||
|
#endif //OFFICEASSISTANT_GLOBALVARIABLES_H
|
7
main.cpp
7
main.cpp
|
@ -1,11 +1,14 @@
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <Windows.h>
|
||||||
|
double scale;
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
|
HDC hdc = GetDC(NULL);
|
||||||
|
scale = GetDeviceCaps(hdc, LOGPIXELSX)/96;
|
||||||
|
ReleaseDC(NULL,hdc);
|
||||||
MainWindow w;
|
MainWindow w;
|
||||||
w.show();
|
w.show();
|
||||||
return a.exec();
|
return a.exec();
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// Created by HW on 2023/07/27.
|
||||||
|
//
|
||||||
|
|
||||||
|
// You may need to build the project (run Qt uic code generator) to get "ui_MainScreen.h" resolved
|
||||||
|
|
||||||
|
#include "mainscreen.h"
|
||||||
|
#include "ui_MainScreen.h"
|
||||||
|
|
||||||
|
|
||||||
|
MainScreen::MainScreen(QWidget *parent) :
|
||||||
|
QWidget(parent), ui(new Ui::MainScreen) {
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
MainScreen::~MainScreen() {
|
||||||
|
delete ui;
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
//
|
||||||
|
// Created by HW on 2023/07/27.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef OFFICEASSISTANT_MAINSCREEN_H
|
||||||
|
#define OFFICEASSISTANT_MAINSCREEN_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
namespace Ui { class MainScreen; }
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
class MainScreen : public QWidget {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit MainScreen(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
~MainScreen() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::MainScreen *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //OFFICEASSISTANT_MAINSCREEN_H
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<author/>
|
||||||
|
<comment/>
|
||||||
|
<exportmacro/>
|
||||||
|
<class>MainScreen</class>
|
||||||
|
<widget class="QWidget" name="MainScreen">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>MainScreen</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<pixmapfunction/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -14,18 +14,21 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
QDesktopWidget* desktopWidget = QApplication::desktop();
|
QDesktopWidget* desktopWidget = QApplication::desktop();
|
||||||
QRect deskRect = desktopWidget->availableGeometry();
|
QRect deskRect = desktopWidget->availableGeometry();
|
||||||
if(deskRect.width()>=1920){
|
|
||||||
resize(1920,1080);
|
|
||||||
}else if(deskRect.width()>=1333&&deskRect.width()<=1920) {
|
|
||||||
resize(800, 540);
|
|
||||||
}
|
|
||||||
delete desktopWidget;
|
delete desktopWidget;
|
||||||
mainWindowLayout=new MainWindowLayout(this);
|
mainWindowLayout=new MainWindowLayout(this);
|
||||||
setCentralWidget(mainWindowLayout);
|
setCentralWidget(mainWindowLayout);
|
||||||
|
if(deskRect.width()*scale>1920){
|
||||||
|
resize(1600,1080);
|
||||||
|
this->setMaximumWidth(1600);
|
||||||
|
}else{
|
||||||
|
resize(800, 540);
|
||||||
|
this->setMaximumWidth(800);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow() {
|
MainWindow::~MainWindow() {
|
||||||
delete mainWindowLayout;
|
delete mainWindowLayout;
|
||||||
delete layout;
|
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,13 +25,17 @@ MainWindowLayout::MainWindowLayout(QWidget *parent) :
|
||||||
buttons[3].text="个人中心";
|
buttons[3].text="个人中心";
|
||||||
buttons[3].logo=".\\images\\personalcenter.png";
|
buttons[3].logo=".\\images\\personalcenter.png";
|
||||||
buttons[3].index=3;
|
buttons[3].index=3;
|
||||||
for(auto i=0;i<4;i++){
|
for(auto i=0;i<4;i++) {
|
||||||
list<<&buttons[i];
|
list << &buttons[i];
|
||||||
}
|
}
|
||||||
|
this->setLayout(nullptr);
|
||||||
navBar=new NavBar(list,this);
|
navBar=new NavBar(list,this);
|
||||||
layout->addWidget(navBar,1);
|
mainScreen=new MainScreen();
|
||||||
layout->addStretch(4);
|
//QSizePolicy sizePolicy(QSizePolicy::Policy::Fixed, QSizePolicy::QSizePolicy::Fixed);
|
||||||
|
//navBar->setSizePolicy(sizePolicy);
|
||||||
layout->setMargin(0);
|
layout->setMargin(0);
|
||||||
|
layout->addWidget(navBar,1);
|
||||||
|
layout->addWidget(mainScreen,4);
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,6 +43,21 @@ MainWindowLayout::~MainWindowLayout() {
|
||||||
|
|
||||||
delete[] list[0];
|
delete[] list[0];
|
||||||
delete navBar;
|
delete navBar;
|
||||||
delete layout;
|
//delete layout;
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindowLayout::resizeEvent(QResizeEvent *event) {
|
||||||
|
QWidget::resizeEvent(event);
|
||||||
|
navBar->resize(navBar->width(),height()/5);
|
||||||
|
//layout->setAlignment(Qt::AlignmentFlag::AlignHCenter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*void MainWindowLayout::paintEvent(QPaintEvent *event) {
|
||||||
|
QWidget::paintEvent(event);
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
|
QRectF rect(0, 0, this->width(), this->height()/5);
|
||||||
|
painter.fillRect(rect, QColor("#333332"));
|
||||||
|
}*/
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include "navbar.h"
|
#include "navbar.h"
|
||||||
|
#include "mainscreen.h"
|
||||||
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
@ -22,6 +23,9 @@ public:
|
||||||
explicit MainWindowLayout(QWidget *parent = nullptr);
|
explicit MainWindowLayout(QWidget *parent = nullptr);
|
||||||
|
|
||||||
~MainWindowLayout() override;
|
~MainWindowLayout() override;
|
||||||
|
protected:
|
||||||
|
void resizeEvent(QResizeEvent *event) override;
|
||||||
|
//void paintEvent(QPaintEvent *event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindowLayout *ui;
|
Ui::MainWindowLayout *ui;
|
||||||
|
@ -29,6 +33,7 @@ private:
|
||||||
QList<ButtonStruct *> list;
|
QList<ButtonStruct *> list;
|
||||||
NavBar *navBar;
|
NavBar *navBar;
|
||||||
ButtonStruct *buttons;
|
ButtonStruct *buttons;
|
||||||
|
MainScreen *mainScreen;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
22
navbar.cpp
22
navbar.cpp
|
@ -12,18 +12,19 @@ NavBar::NavBar(QList<ButtonStruct *> &buttonNames,QWidget *parent) :
|
||||||
QWidget(parent), ui(new Ui::NavBar) {
|
QWidget(parent), ui(new Ui::NavBar) {
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
layout=new QHBoxLayout();
|
layout=new QHBoxLayout();
|
||||||
layout->setMargin(0);
|
layout->setContentsMargins(0,0,0,0);
|
||||||
this->setMinimumHeight(48);
|
this->setMinimumHeight(48);
|
||||||
this->setMaximumHeight(150);
|
this->setMaximumHeight(200);
|
||||||
for(auto buttonName : buttonNames){
|
for(auto buttonName : buttonNames){
|
||||||
MyButton *button=new MyButton(buttonName->logo,buttonName->text,height(),height());
|
MyButton *button=new MyButton(buttonName->logo,buttonName->text,height(),height(),&buttons);
|
||||||
//QSizePolicy sizePolicy(QSizePolicy::Policy::Maximum, QSizePolicy::QSizePolicy::Maximum);
|
QSizePolicy sizePolicy(QSizePolicy::Policy::Fixed, QSizePolicy::QSizePolicy::Fixed);
|
||||||
//button->setSizePolicy(sizePolicy);
|
button->setSizePolicy(sizePolicy);
|
||||||
layout->addWidget(button);
|
layout->addWidget(button);
|
||||||
buttons<<button;
|
buttons<<button;
|
||||||
}
|
}
|
||||||
layout->setAlignment(Qt::AlignHCenter);
|
|
||||||
|
|
||||||
|
layout->setAlignment(Qt::AlignHCenter);
|
||||||
|
layout->setSpacing(0);
|
||||||
this->setLayout(layout);
|
this->setLayout(layout);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,4 +45,13 @@ void NavBar::paintEvent(QPaintEvent *event) {
|
||||||
|
|
||||||
QRectF rect(0, 0, this->width(), this->height());
|
QRectF rect(0, 0, this->width(), this->height());
|
||||||
painter.fillRect(rect, QColor("#333332"));
|
painter.fillRect(rect, QColor("#333332"));
|
||||||
|
|
||||||
|
}
|
||||||
|
void NavBar::resizeEvent(QResizeEvent *event) {
|
||||||
|
QWidget::resizeEvent(event);
|
||||||
|
for(auto button:buttons){
|
||||||
|
button->setSize(event->size().height(),event->size().height(),event->size().height(),event->size().height());
|
||||||
|
button->resize(event->size().height(),event->size().height());
|
||||||
|
button->update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
8
navbar.h
8
navbar.h
|
@ -23,11 +23,17 @@ public:
|
||||||
|
|
||||||
~NavBar() override;
|
~NavBar() override;
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *event);
|
void paintEvent(QPaintEvent *event) override;
|
||||||
|
|
||||||
|
void resizeEvent(QResizeEvent *event) override;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::NavBar *ui;
|
Ui::NavBar *ui;
|
||||||
QHBoxLayout *layout;
|
QHBoxLayout *layout;
|
||||||
QList<MyButton *> buttons;
|
QList<MyButton *> buttons;
|
||||||
|
int width2;
|
||||||
|
int height2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue