下载内容----> 完整使用例子下载
随着Web前端技术的飞速发展,Vue Element UI以其优雅的设计风格、丰富的组件库以及高度的定制性,迅速成为开发者构建现代化用户界面的首选之一。尽管Vue Element UI主要服务于Web应用,其设计理念和视觉风格对桌面应用程序的界面设计同样具有启发意义,尤其是在使用Qt框架开发的项目中,通过Qt的样式表(QSS)技术,我们能够借鉴Element UI的美学特点,提升Qt应用的用户界面美观度和用户体验。
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QDebug>
#include <QPainter>
#include "QGraphicsScene"
#include "QGraphicsView"
#include "QGraphicsLineItem"
#include "QPaintEvent"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QFile file(":/Tabs.qss");
file.open(QFile::ReadOnly);
QString qss=file.readAll();
file.close();
applyStyles(this,qss);
loadTabWidget1(ui->tabWidget->currentIndex());
loadTabWidget2(ui->tabWidget_2->currentIndex());
}
Widget::~Widget()
{
delete ui;
}
void Widget::applyStyles(QWidget *widget,QString stylesheet)
{
widget->setStyleSheet(stylesheet); // 使用上面读取到的stylesheet
// 遍历所有子控件并递归应用样式
for (auto child : widget->findChildren<QWidget*>()) {
applyStyles(child,stylesheet);
}
}
// 重写paintEvent事件处理函数,用于绘制线段
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter2(this);
QColor color2(QString("#e4e7ed"));
QPen pen2(color2, 2); // 这里的1是线条的宽度
painter2.setPen(pen2);
painter2.drawLine(xStart2, y2+2, xEnd2, y2+2); // 长线
QPainter painter(this);
QColor color(QString("#409eff"));///409eff
QPen pen(color, 2); // 这里的1是线条的宽度
painter.setPen(pen);
painter.drawLine(xStart, y+2, xEnd, y+2);// 短线
QPainter painter5(this);
QColor color5(QString("#e4e7ed"));///e4e7ed
QPen pen5(color5, 2); // 这里的1是线条的宽度
painter5.setPen(pen5);
painter5.drawLine(xStart5, y5+2, xEnd5, y5+2);// 长线
QPainter painter3(this);
QColor color3(QString("#ffffff"));
QPen pen3(color3, 2); // 这里的1是线条的宽度
painter3.setPen(pen3);
painter3.drawLine(xStart3, y3+2, xEnd3, y3+2);// 短线
}
void Widget::on_tabWidget_tabBarClicked(int index)
{
loadTabWidget1(index);
// 更新窗口,触发paintEvent重新绘制
update();
}
void Widget::on_tabWidget_2_tabBarClicked(int index)
{
loadTabWidget2(index);
// 更新窗口,触发paintEvent重新绘制
update();
}