内容详情界面布局
parent
4f407f42ac
commit
fd1687a15f
|
@ -6,7 +6,7 @@ set(CMAKE_AUTOMOC ON)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
|
||||||
find_package(Qt6 COMPONENTS Quick REQUIRED)
|
find_package(Qt6 COMPONENTS Quick WebEngineQuick REQUIRED)
|
||||||
|
|
||||||
#遍历所有Cpp文件
|
#遍历所有Cpp文件
|
||||||
file(GLOB_RECURSE CPP_FILES src/*.cpp src/*.h)
|
file(GLOB_RECURSE CPP_FILES src/*.cpp src/*.h)
|
||||||
|
@ -52,6 +52,7 @@ target_include_directories(AicsKnowledgeBase PRIVATE
|
||||||
|
|
||||||
target_link_libraries(AicsKnowledgeBase PRIVATE
|
target_link_libraries(AicsKnowledgeBase PRIVATE
|
||||||
Qt6::Quick
|
Qt6::Quick
|
||||||
|
Qt::WebEngineQuick
|
||||||
fluentuiplugin
|
fluentuiplugin
|
||||||
FramelessHelper::Core
|
FramelessHelper::Core
|
||||||
FramelessHelper::Quick
|
FramelessHelper::Quick
|
||||||
|
|
|
@ -6,6 +6,7 @@ import QtQuick.Controls.Basic
|
||||||
import FluentUI
|
import FluentUI
|
||||||
import org.wangwenx190.FramelessHelper
|
import org.wangwenx190.FramelessHelper
|
||||||
import "qrc:///AicsKnowledgeBase/qml/global"
|
import "qrc:///AicsKnowledgeBase/qml/global"
|
||||||
|
import "qrc:///AicsKnowledgeBase/qml/page"
|
||||||
|
|
||||||
FluWindow {
|
FluWindow {
|
||||||
id: window
|
id: window
|
||||||
|
@ -52,6 +53,14 @@ FluWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ContentPage{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
topPadding: 10
|
||||||
|
Layout.topMargin: 20
|
||||||
|
|
||||||
|
}
|
||||||
|
/*
|
||||||
FluArea {
|
FluArea {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
@ -64,7 +73,7 @@ FluWindow {
|
||||||
Layout.topMargin: 20
|
Layout.topMargin: 20
|
||||||
text: "Content"
|
text: "Content"
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
FramelessHelper {
|
FramelessHelper {
|
||||||
|
|
|
@ -0,0 +1,189 @@
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Window
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Controls.Basic
|
||||||
|
import QtWebEngine 1.2
|
||||||
|
import FluentUI
|
||||||
|
|
||||||
|
FluScrollablePage {
|
||||||
|
id: contentPage
|
||||||
|
property int knowledgeFileId
|
||||||
|
property int likeCount: 0
|
||||||
|
property int favoriteCount: 0
|
||||||
|
property int shareCount: 0
|
||||||
|
property int browsCount: 555
|
||||||
|
property bool isLike: false
|
||||||
|
property bool isFavorite: false
|
||||||
|
property double fileSize: 455
|
||||||
|
property list<string> tags: ["tage 1", "tage 2", "tage 3"]
|
||||||
|
property date publishTime: new Date()
|
||||||
|
property string brief: "这是一个简介"
|
||||||
|
property string type: null
|
||||||
|
property var contentShow
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
FluArea {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
implicitHeight: 50
|
||||||
|
Layout.topMargin: 15
|
||||||
|
|
||||||
|
FluText {
|
||||||
|
id: text_title
|
||||||
|
padding: 10
|
||||||
|
text: "文章标题"
|
||||||
|
font{
|
||||||
|
pointSize: 15
|
||||||
|
bold: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
id: layout_share
|
||||||
|
FluIconButton {
|
||||||
|
id: button_share
|
||||||
|
iconSize: 15
|
||||||
|
iconSource: FluentIcons.Share
|
||||||
|
text: contentPage.shareCount.toString()
|
||||||
|
}
|
||||||
|
FluText {
|
||||||
|
id: text_share
|
||||||
|
text: contentPage.shareCount
|
||||||
|
font.pointSize: 8
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: button_share.horizontalCenter
|
||||||
|
top: button_share.bottom
|
||||||
|
}
|
||||||
|
}
|
||||||
|
anchors{
|
||||||
|
verticalCenter: text_title.verticalCenter
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
id: layout_favorite
|
||||||
|
FluIconButton {
|
||||||
|
id: button_favorite
|
||||||
|
iconSize: 15
|
||||||
|
iconSource: contentPage.isFavorite ? FluentIcons.FavoriteStarFill : FluentIcons.FavoriteStar
|
||||||
|
}
|
||||||
|
FluText {
|
||||||
|
id: text_favorite
|
||||||
|
text: contentPage.favoriteCount
|
||||||
|
font.pointSize: 8
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: button_favorite.horizontalCenter
|
||||||
|
top: button_favorite.bottom
|
||||||
|
}
|
||||||
|
}
|
||||||
|
anchors{
|
||||||
|
verticalCenter: text_title.verticalCenter
|
||||||
|
right: layout_share.left
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
id: layout_like
|
||||||
|
FluIconButton {
|
||||||
|
id: button_like
|
||||||
|
iconSize: 15
|
||||||
|
iconSource: contentPage.isLike ? FluentIcons.HeartFill : FluentIcons.Heart
|
||||||
|
}
|
||||||
|
FluText {
|
||||||
|
id: text_like
|
||||||
|
text: contentPage.favoriteCount
|
||||||
|
font.pointSize: 8
|
||||||
|
anchors {
|
||||||
|
horizontalCenter: button_like.horizontalCenter
|
||||||
|
top: button_like.bottom
|
||||||
|
}
|
||||||
|
}
|
||||||
|
anchors{
|
||||||
|
verticalCenter: text_title.verticalCenter
|
||||||
|
right: layout_favorite.left
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FluIconButton {
|
||||||
|
id: button_download
|
||||||
|
iconSize: 25
|
||||||
|
iconSource: FluentIcons.Download
|
||||||
|
anchors {
|
||||||
|
verticalCenter: text_title.verticalCenter
|
||||||
|
right: layout_like.left
|
||||||
|
rightMargin: 20
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FluMediaPlayer {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: textMd
|
||||||
|
text: contentPage.contentMd
|
||||||
|
textFormat: TextEdit.MarkdownText
|
||||||
|
focus: true
|
||||||
|
}
|
||||||
|
WebEngineView {
|
||||||
|
id: sitemonitoryView
|
||||||
|
backgroundColor: "transparent"
|
||||||
|
implicitHeight: 200
|
||||||
|
Layout.fillWidth: true
|
||||||
|
settings.javascriptEnabled : true
|
||||||
|
settings.pluginsEnabled:true
|
||||||
|
url:"https://www.qt.io"
|
||||||
|
}
|
||||||
|
|
||||||
|
FluArea {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
implicitHeight: 100
|
||||||
|
ColumnLayout {
|
||||||
|
RowLayout {
|
||||||
|
FluText{
|
||||||
|
padding: 10
|
||||||
|
text: contentPage.publishTime.toDateString()
|
||||||
|
}
|
||||||
|
FluText{
|
||||||
|
padding: 10
|
||||||
|
text: contentPage.fileSize.toString() + "Mb"
|
||||||
|
}
|
||||||
|
FluText{
|
||||||
|
padding: 10
|
||||||
|
text: contentPage.browsCount.toString()+"浏览量"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FluText{
|
||||||
|
Layout.topMargin: -2
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
text: contentPage.brief
|
||||||
|
}
|
||||||
|
RowLayout{
|
||||||
|
Layout.topMargin: 2
|
||||||
|
Layout.leftMargin: 5
|
||||||
|
Repeater {
|
||||||
|
model: contentPage.tags
|
||||||
|
delegate: Button {
|
||||||
|
Layout.margins: 2
|
||||||
|
text: "#"+contentPage.tags[index]
|
||||||
|
background: Rectangle {
|
||||||
|
implicitHeight: 10
|
||||||
|
implicitWidth: 10
|
||||||
|
color: FluColors.Grey20
|
||||||
|
radius: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FluText {
|
||||||
|
Layout.topMargin: 10
|
||||||
|
text: "笔记"
|
||||||
|
font {
|
||||||
|
pointSize: 15
|
||||||
|
bold: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QQuickWindow>
|
#include <QQuickWindow>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
|
#include <QtWebEngineQuick/qtwebenginequickglobal.h>
|
||||||
#include <FramelessHelper/Quick/framelessquickmodule.h>
|
#include <FramelessHelper/Quick/framelessquickmodule.h>
|
||||||
#include <FramelessHelper/Core/private/framelessconfig_p.h>
|
#include <FramelessHelper/Core/private/framelessconfig_p.h>
|
||||||
#include "HttpClient.h"
|
#include "HttpClient.h"
|
||||||
|
@ -14,6 +15,10 @@ int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
//将样式设置为Basic,不然会导致组件显示异常
|
//将样式设置为Basic,不然会导致组件显示异常
|
||||||
qputenv("QT_QUICK_CONTROLS_STYLE", "Basic");
|
qputenv("QT_QUICK_CONTROLS_STYLE", "Basic");
|
||||||
|
|
||||||
|
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
|
||||||
|
QtWebEngineQuick::initialize();
|
||||||
|
|
||||||
FramelessHelper::Quick::initialize();
|
FramelessHelper::Quick::initialize();
|
||||||
QGuiApplication app(argc, argv);
|
QGuiApplication app(argc, argv);
|
||||||
app.setOrganizationName("HFUT Software");
|
app.setOrganizationName("HFUT Software");
|
||||||
|
@ -36,7 +41,7 @@ int main(int argc, char* argv[])
|
||||||
qmlRegisterSingletonInstance<HttpClient>("AicsKB.HttpClient", 1, 0, "HttpClient", httpClient);
|
qmlRegisterSingletonInstance<HttpClient>("AicsKB.HttpClient", 1, 0, "HttpClient", httpClient);
|
||||||
|
|
||||||
|
|
||||||
const QUrl url(u"qrc:/AicsKnowledgeBase/qml/component/FileList.qml"_qs);
|
const QUrl url(u"qrc:/AicsKnowledgeBase/qml/App.qml"_qs);
|
||||||
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
|
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
|
||||||
&app, [url](QObject* obj, const QUrl& objUrl) {
|
&app, [url](QObject* obj, const QUrl& objUrl) {
|
||||||
if (!obj && url == objUrl)
|
if (!obj && url == objUrl)
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
### 欢迎使用Markdown
|
||||||
|
|
||||||
|
##### 新增图片上传功能
|
||||||
|
|
||||||
|
现在可以在文章中插入图片!
|
||||||
|
|
||||||
|
- 您可以插入外链图片,或上传本地图片到文档中。
|
||||||
|
- 可上传的单张图片最大20M,支持PNG、JPG格式。
|
||||||
|
- 若有其他疑问,欢迎咨询官网在线客服。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Welcome to the Markdown
|
||||||
|
|
||||||
|
##### New feature! Insert pictures in your articles now!
|
||||||
|
|
||||||
|
You can insert pictures from external links, or upload ones.
|
||||||
|
|
||||||
|
The maximum size of the picture to upload is 20M. PNG and JPG are better.
|
||||||
|
|
||||||
|
Have any other questions, please contact our official customer service.
|
Loading…
Reference in New Issue