1
0
mirror of https://gitee.com/drabel/LibQQt.git synced 2025-01-04 10:18:44 +08:00

fix conflict

This commit is contained in:
tianduanrui 2018-05-13 20:44:42 +08:00
commit 65c8be6c94
7 changed files with 111 additions and 37 deletions

View File

@ -99,7 +99,15 @@ contains (CONFIG, QQT_SOURCE_BUILDIN) {
#link_from_sdk do move qqt to sdk path at app pre link command not lib build time
#mod qqt source to start post link is not needed here.
#need mod app souce after every pri mod.
system("touch $${QQT_SOURCE_ROOT}/frame/qqtapplication.cpp")
#起初,qmake步骤被安置在QQt里,所以只有更改源代码才能启动POSTLINK.现在放置在App里了,这里的touch修改源代码不需要了.
#App修改源代码,Creator会自动qmake,启动qmake步骤PRILINK+POSTLINK
#App修改pro,必须手动qmake,Creator才会qmake,启动qmake步骤PRILINK+POSTLINK
#App必须注意,此处不再持续编译QQt.
#QQt持续编译配置开关
CONFIG += continued_build
contains(CONFIG, continued_build){
system("touch $${QQT_SOURCE_ROOT}/frame/qqtapplication.cpp")
}
include ($${QQT_SOURCE_ROOT}/qqt_install.pri)
#in this pri use QQT_SDK_ROOT QQT_SDK_PWD QQT_LIB_PWD

View File

@ -18,6 +18,7 @@ QQtCustomProgressBar::QQtCustomProgressBar ( QWidget* parent ) : QWidget ( paren
nullPosition = 0;
lineWidth = 10;
cornerRadius = 10;
lineCapStyle = Qt::RoundCap;
showPercent = true;
showFree = false;
@ -162,7 +163,7 @@ void QQtCustomProgressBar::drawArc ( QPainter* painter, int radius )
pen.setWidthF ( lineWidth );
/*这里可以更改画笔样式更换线条风格*/
pen.setCapStyle ( Qt::RoundCap );
pen.setCapStyle ( ( Qt::PenCapStyle ) lineCapStyle );
double arcLength = 360.0 / ( maxValue - minValue ) * ( value - minValue );
QRect rect ( -radius, -radius, radius * 2, radius * 2 );
@ -591,6 +592,15 @@ void QQtCustomProgressBar::setLineWidth ( int lineWidth )
}
}
void QQtCustomProgressBar::setLineCapStyle ( int lineCapStyle )
{
if ( this->lineCapStyle != lineCapStyle )
{
this->lineCapStyle = lineCapStyle;
update();
}
}
void QQtCustomProgressBar::setShowPercent ( bool showPercent )
{
if ( this->showPercent != showPercent )

View File

@ -55,6 +55,7 @@ class QQTSHARED_EXPORT QQtCustomProgressBar : public QWidget
Q_PROPERTY ( int nullPosition READ getNullPosition WRITE setNullPosition )
Q_PROPERTY ( int lineWidth READ getLineWidth WRITE setLineWidth )
Q_PROPERTY ( int cornerRadius READ getCornerRaduis WRITE setCornerRadius )
Q_PROPERTY ( int lineCapStyle READ getLineCapStyle WRITE setLineCapStyle )
Q_PROPERTY ( bool showPercent READ getShowPercent WRITE setShowPercent )
Q_PROPERTY ( bool showFree READ getShowFree WRITE setShowFree )
@ -112,11 +113,11 @@ public:
enum TextStyle
{
TextStyle_None = 0, /*不显示*/
TextStyle_None = 0, /*不显示*/
TextStyle_Middle_Percent = 1, /*只在中央显示百分比*/
TextStyle_Percent = 2, /*只显示百分比*/
TextStyle_Text = 3, /*只显示文字*/
TextStyle_Percent_Text = 4, /*显示百分比和文字*/
TextStyle_Percent = 2, /*只在下部显示百分比*/
TextStyle_Text = 3, /*不在下部显示百分比,在中央显示文字*/
TextStyle_Percent_Text = 4, /*和在下部显示百分比在中央显示文字*/
};
explicit QQtCustomProgressBar ( QWidget* parent = 0 );
@ -130,6 +131,7 @@ public:
int getNullPosition() const;
int getLineWidth() const;
int getCornerRaduis() const { return cornerRadius; }
int getLineCapStyle() const { return lineCapStyle; }
bool getShowPercent() const;
bool getShowFree() const;
@ -176,6 +178,8 @@ public Q_SLOTS:
void setNullPosition ( int nullPosition );
/*设置线条宽度*/
void setLineWidth ( int lineWidth );
/*设置线条的帽子(线头)的样式 = Qt::PenCapStyle*/
void setLineCapStyle ( int lineCapStyle );
/*设置是否显示百分比*/
void setShowPercent ( bool showPercent );
@ -231,13 +235,13 @@ signals:
public slots:
protected:
void paintEvent ( QPaintEvent* );
void drawBackground ( QPainter* painter, int radius );
void drawArc ( QPainter* painter, int radius );
void drawPolo ( QPainter* painter, int radius );
void drawWave ( QPainter* painter, int radius );
void drawText ( QPainter* painter, int radius );
void drawPercentText ( QPainter* painter, int radius );
virtual void paintEvent ( QPaintEvent* );
virtual void drawBackground ( QPainter* painter, int radius );
virtual void drawArc ( QPainter* painter, int radius );
virtual void drawPolo ( QPainter* painter, int radius );
virtual void drawWave ( QPainter* painter, int radius );
virtual void drawText ( QPainter* painter, int radius );
virtual void drawPercentText ( QPainter* painter, int radius );
private:
int maxValue; /*最小值*/
@ -246,6 +250,7 @@ private:
int nullPosition; /*起始角度*/
int lineWidth; /*线条宽度*/
int lineCapStyle; /*线条的帽子(线头)的样式*/
bool showPercent; /*是否显示百分比*/
QString text; /*文字*/

View File

@ -158,13 +158,27 @@ void QQtPictureTabBar::drawPicture ( QPainter* p )
{
p->save();
int sel = currentIndex() == index ? BTN_PRESS : BTN_NORMAL;
#if 1
//tabRect = rect()?
p->drawPixmap ( tRect0, QIcon ( imgList[index][sel] ).pixmap ( tRect0.size(), QIcon::Normal, QIcon::On ) );
#endif
/*
* 使
*/
//QImage image(iconList[index][sel]);
//p.drawItemPixmap(tabRectValue, Qt::AlignLeft |Qt::AlignTop, QPixmap::fromImage(image.scaled(tabRectValue.size(), Qt::KeepAspectRatio)));
#if 0
QImage image ( iconList[index][sel] );
p.drawItemPixmap ( tabRectValue, Qt::AlignLeft | Qt::AlignTop, QPixmap::fromImage ( image.scaled ( tabRectValue.size(),
Qt::KeepAspectRatio ) ) );
#endif
//需要QStylePainter支援
//为什么不用这个呢?因为上边那个QIcon直接缩放到了完整的符合Icon大小的图.直接居中.
//这个不需要,多次一举.
#if 0
p->drawItemPixmap ( tRect0, Qt::AlignCenter, QIcon ( imgList[index][sel] ).pixmap ( tRect0.size(), QIcon::Normal,
QIcon::On ) );
#endif
p->restore();
}
}

View File

@ -16,8 +16,8 @@ QQtProgressBar::QQtProgressBar ( QWidget* parent ) :
m_trunk = "./skin/default/bk_progress_trunk.png";
ui->widthTrunk->setPixmap ( m_trunk );
ui->widgetBack->setPixmap ( m_back );
ui->widthTrunk->setType ( QQtWidget::QQTTILEDWIDTH );
ui->widgetBack->setType ( QQtWidget::QQTZOOMWIDTH );
ui->widthTrunk->setImageStyle ( QQtWidget::QQTTILEDWIDTH );
ui->widgetBack->setImageStyle ( QQtWidget::QQTZOOMWIDTH );
}
QQtProgressBar::~QQtProgressBar()

View File

@ -20,7 +20,7 @@ QQtWidget::~QQtWidget()
void QQtWidget::setPixmap ( const QString& pic )
{
bool ret = mImg.load ( pic );
bool ret = mImage.load ( pic );
/*请确认文件是否拷贝成功。*/
//pline() << ret << mImg.isNull();
update();
@ -28,19 +28,19 @@ void QQtWidget::setPixmap ( const QString& pic )
void QQtWidget::setPixmap ( const QPixmap& pixmap )
{
mImg = pixmap.toImage();
mImage = pixmap.toImage();
update();
}
void QQtWidget::setPixmap ( const QImage& image )
{
mImg = image;
mImage = image;
update();
}
void QQtWidget::paintEvent ( QPaintEvent* event )
{
if ( mImg.isNull() )
if ( mImage.isNull() )
return QWidget::paintEvent ( event );
QStylePainter p ( this );
@ -49,18 +49,52 @@ void QQtWidget::paintEvent ( QPaintEvent* event )
{
case QQTCENTER:
{
/*
/**
* QImage需要做的size判断很繁复使QIcon做一些中间转换的后续转换pixmap的目的
* source: pixmap file image
* QImage pixmap
* (+QIcon) QIcon pixmap
* dest: pixmap
*/
//这个也不行.???不能缩放...
#if 0
QPixmap pix;
pix.convertFromImage ( mImage );
p.drawPixmap ( rect(), pix );
#endif
//计算繁琐
#if 0
QSize rSize = rect().size();
QSize iSize = mImage.rect().size();
int lX = iSize.width() <= rSize.width() ? iSize.width() : rSize.width();
int lY = iSize.height() <= rSize.height() ? iSize.height() : rSize.height();
QSize mSize ( lX, lY );
p.drawItemPixmap ( rect(), Qt::AlignCenter, QPixmap::fromImage ( mImage.scaled ( mSize, Qt::KeepAspectRatio ) ) );
#endif
//缩小图片的时候,失败了.???不是的,外部使用的时候请注意,你的widget最小大小是不是0,0.如果不是,那么你的fixedSize是不是太小了,能设置成功吗?
//写法复杂
#if 0
QIcon icon;
icon.addPixmap ( QPixmap::fromImage ( mImg ), QIcon::Normal, QIcon::On );
icon.addPixmap ( QPixmap::fromImage ( mImage ), QIcon::Normal, QIcon::On );
p.drawItemPixmap ( rect(), Qt::AlignCenter, icon.pixmap ( rect().size(), QIcon::Normal, QIcon::On ) );
//QSize mSize = mImg.rect() > rect() ? rect().size() : mImg.size();
//p.drawItemPixmap ( rect(), Qt::AlignCenter, QPixmap::fromImage ( mImg.scaled ( mSize, Qt::KeepAspectRatio ) ) );
#endif
//经过验证,
//QIcon的构造函数参数为pixmap的有bug,不能正常获得完整pixmap.
//QIcon的构造函数参数为QString的是正常的.
//以上结论错误,都是好的,没有bug,受到了外部widget,setMinimumSize的限定蛊惑,setFixedSize无效导致的.
//不居中.
#if 0
p.drawPixmap ( rect(), QIcon ( QPixmap::fromImage ( mImage ) ).pixmap ( rect().size(), QIcon::Normal, QIcon::On ) );
#endif
#if 1
p.drawItemPixmap ( rect(), Qt::AlignCenter, QIcon ( QPixmap::fromImage ( mImage ) ).pixmap ( rect().size(),
QIcon::Normal, QIcon::On ) );
#endif
}
break;
@ -68,7 +102,7 @@ void QQtWidget::paintEvent ( QPaintEvent* event )
{
p.drawItemPixmap ( rect(), Qt::AlignLeft | Qt::AlignTop,
/*.copy() 切出图片的左上部分使用*/
QPixmap::fromImage ( mImg.copy ( rect() )
QPixmap::fromImage ( mImage.copy ( rect() )
.scaledToWidth ( rect().width() )
) );
}
@ -78,8 +112,8 @@ void QQtWidget::paintEvent ( QPaintEvent* event )
{
p.drawItemPixmap ( rect(), Qt::AlignLeft | Qt::AlignTop,
/*不.copy() 切出图片的中间部分使用*/
QPixmap::fromImage ( mImg
.scaled ( rect().width(), mImg.height(), Qt::IgnoreAspectRatio )
QPixmap::fromImage ( mImage
.scaled ( rect().width(), mImage.height(), Qt::IgnoreAspectRatio )
) );
}
break;
@ -108,7 +142,7 @@ void QQtWidget::mouseReleaseEvent ( QMouseEvent* event )
{
m_lcTimer->stop();
emit click();
emit clickWithPoint(event->pos());
emit clickWithPoint ( event->pos() );
}
return QWidget::mouseReleaseEvent ( event );
@ -117,13 +151,13 @@ void QQtWidget::mouseReleaseEvent ( QMouseEvent* event )
void QQtWidget::mouseDoubleClickEvent ( QMouseEvent* event )
{
emit doubleClick();
emit doubleClickWithPoint(event->pos());
emit doubleClickWithPoint ( event->pos() );
return QWidget::mouseDoubleClickEvent ( event );
}
void QQtWidget::slot_timeout()
{
emit longClick();
emit longClickWithPoint(mlongClickPoint);
emit longClickWithPoint ( mlongClickPoint );
}

View File

@ -1,4 +1,4 @@
#ifndef QQTWIDGET_H
#ifndef QQTWIDGET_H
#define QQTWIDGET_H
#include <qqt-local.h>
@ -22,6 +22,9 @@ public:
enum ImageStyle
{
/**
* ,
*/
QQTCENTER,
/*
* label的效果rect长
@ -31,7 +34,7 @@ public:
QQTZOOMWIDTH,
QQTZOOMHEIGHT,
};
void setType ( ImageStyle style = QQTCENTER ) { m_style = style; }
void setImageStyle ( ImageStyle style = QQTCENTER ) { m_style = style; }
void setPixmap ( const QString& pic = QString() );
void setPixmap ( const QPixmap& pixmap );
@ -43,9 +46,9 @@ signals:
void longClick();
signals:
void clickWithPoint(QPoint point);
void doubleClickWithPoint(QPoint point);
void longClickWithPoint(QPoint point);
void clickWithPoint ( QPoint point );
void doubleClickWithPoint ( QPoint point );
void longClickWithPoint ( QPoint point );
// QWidget interface
protected:
@ -66,7 +69,7 @@ private:
/*pixmap是必要的。绘图用pixmap。*/
/*内部没有使用QPixmap存储因为如果缩放widgetpixmap就没办法了img有*/
/*内部对QIcon的使用删除了icon不是必要的。*/
QImage mImg;
QImage mImage;
//for longClickWithPoint()
QPoint mlongClickPoint;
};