Skip to content

Commit

Permalink
解决布局x方向错误问题,添加打包功能
Browse files Browse the repository at this point in the history
  • Loading branch information
cathaysia committed May 23, 2021
1 parent f13ffc1 commit 90e5666
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 16 deletions.
13 changes: 12 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,22 @@
cmake_minimum_required(VERSION 3.0)

project(digikamflowplugin)
project(digikamflowplugin
VERSION 0.0.1
DESCRIPTION "a plugin add a Flow View to digikam"
HOMEPAGE_URL https://github.com/cathaysia/digikamflowplugin)

list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)

include(FeatureSummary)
include(CMakePrintHelpers)

add_subdirectory(src)

set(CPACK_PACKAGE_VENDOR Z)
set(CPACK_GENERATOR TGZ)
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/pack)
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME})
include(CPack)
cmake_print_variables(CPACK_PACKAGE_FILE_NAME)

feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
8 changes: 4 additions & 4 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ find_file(DIGIKAM_PLUGIN_CONFIG DigikamPluginConfig.cmake
HINTS /usr/lib/cmake/DigikamPlugin/
)
include(${DIGIKAM_PLUGIN_CONFIG})
message(STATUS "PicFlowView will be installed to /usr/${DPluginGenericInstallPath}")
install(TARGETS PicFlowView DESTINATION /usr/${DPluginGenericInstallPath})


cmake_print_variables(DPluginGenericInstallPath)
# 这里需要使用相对路径,否则 CPack 不识别
install(TARGETS PicFlowView
LIBRARY DESTINATION ${DPluginGenericInstallPath})
19 changes: 8 additions & 11 deletions src/FlowLayout/flowlayout.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@
#include "flowlayout.h"
#include <QDebug>
#include <QRect>
#include <QWidget>
#include <QTimer>
#include <QWidget>

#include <functional>
#include <iostream>

namespace Z {
FlowLayout::FlowLayout(QWidget* parent) : QLayout(parent), inner_height_(0), timer_{new QTimer} {
FlowLayout::FlowLayout(QWidget* parent) : QLayout(parent), inner_height_(0), timer_ { new QTimer } {
// 延迟刷新
timer_->setInterval(300);
connect(timer_, &QTimer::timeout, this, &FlowLayout::update);
Expand Down Expand Up @@ -88,10 +88,9 @@ const QList<QLayoutItem*> FlowLayout::list() const {
return list_;
}


void FlowLayout::doMonoLayout() {
assert(width_ != -1);
if(list_.length() <=0) return;
if(list_.length() <= 0) return;
// 一行内有 n 个 widget 和 n-1 个 spacing
// n*width_ + (n-1)*spacing = this->width()
// n*(width_+spacing) - spacing = this.width()
Expand All @@ -110,19 +109,17 @@ void FlowLayout::doMonoLayout() {
auto yFlags = std::make_shared<std::vector<int>>();
yFlags->resize(n);

int xFlag = 0;
qreal realHeight = 0;
int min = 0;
int min = 0;
for(size_t i = 0; i < list_.length(); ++i) {
// realHieght = realWidth*(y/x)
// ry/rx=y/x ==> ry=rx*y/x
realHeight = realWidth * list_[i]->sizeHint().rheight() / list_[i]->sizeHint().rwidth();
list_[i]->setGeometry(QRect(xFlag, (*yFlags)[min], realWidth, realHeight));
list_[i]->setGeometry(QRect(min * (spacing() + realWidth), (*yFlags)[min], realWidth, realHeight));
(*yFlags)[min] += (realHeight + spacing());
xFlag = xFlag + realWidth + spacing() > this->geometry().width() ? 0 : xFlag + realWidth + spacing();
//
for(int i =0; i<yFlags->size(); ++i){
if(yFlags->at(i)<yFlags->at(min)) min = i;
// 选出最短的一个
for(int i = 0; i < yFlags->size(); ++i) {
if(yFlags->at(i) < yFlags->at(min)) min = i;
}
}
// 设置父组件的尺寸
Expand Down

0 comments on commit 90e5666

Please sign in to comment.