资源简介
该控件继承QWidget, 实现了左右上下四种形式的坐标轴控件。
可以设置固定间隔或自动选择间隔
可以设置最小间隔
开放一个槽来动态调整坐标轴的范围
处理了边缘刻度的显示
/************************************************************************
* 版权所有 (C) 2012-2015, liang1057@yahoo.com.cn
类声明: 坐标轴控件
************************************************************************/
/** @brief 坐标轴控件
*
* @details 坐标轴控件 只有刻度和数字,数字可以隐藏(用来显示其他需要显示的刻度值)
*/
class uiAxis : public QWidget
{
Q_OBJECT
public:
/** @brief 坐标轴类型
*
* @details 坐标轴类型
*/
enum AXISTYPE{
LEFT_AXIS = 0,
TOP_AXIS,
RIGHT_AXIS,
BOTTOM_AXIS
};
/** @brief 构造函数 */
uiAxis(AXISTYPE type = BOTTOM_AXIS, QWidget *parent = 0);
/** @brief 析构函数 */
~uiAxis(void);
/** @brief 设置坐标轴的范围 */
void setScop(double minValue, double maxValue);
/** @brief 获取坐标轴的范围 */
void getScop(double& minValue,double& maxValue);
/** @brief 获取坐标轴的范围 */
double getMinValue();
double getMaxValue();
/** @brief 设置坐标轴的类型 */
void setAxisType(AXISTYPE type);
/** @brief 坐标轴的类型 */
AXISTYPE getAxisType();
/** @brief 设置最小刻度(小刻度的最小间隔) */
void setMinInterval(double value);
/** @brief 设置自动间隔 */
void setAutoScale(bool val=true);
/** @brief 设置固定间隔 */
void setSettedScale(bool val=true);
/** @brief 设置坐标轴的绘制范围, 像素值 */
void setBoundary(int left, int right, int top, int bottom);
void getBoundary(int& left, int& right, int& top, int& bottom);
代码片段和文件信息
#include
#include “QsGui/Gui/uiAxis.h“
uiAxis::uiAxis( QWidget *parent /*= 0*/AXISTYPE type)
:QWidget(parent)
{
m_minValue = -10;
m_maxValue = 10;
m_hasMinInterval = false;
m_minInterval = 1;
m_left= 0;
m_right = 0;
m_top = 0;
m_bottom = 0;
m_lineLength = 10;
m_axisText = ““;
m_axisType = type;
m_isAutoScale = true;
setMinimumSize(40 40);
}
uiAxis::~uiAxis(void)
{
}
void uiAxis::paintEvent( QPaintEvent *event )
{
paintAxis();
}
void uiAxis::setScop( double minValue double maxValue )
{
m_minValue = minValue;
m_maxValue = maxValue;
generateAxis();
}
void uiAxis::getScop( double& minValuedouble& maxValue )
{
minValue = m_minValue;
maxValue = m_maxValue;
}
double uiAxis::getMinValue()
{
return m_minValue;
}
double uiAxis::getMaxValue()
{
return m_maxValue;
}
void uiAxis::setAxisType( AXISTYPE type )
{
m_axisType = type;
// if(m_axisType == BOTTOM_AXIS || m_axisType == TOP_AXIS)
// {
// setMinimumHeight(30);
// setMaximumHeight(100);
// }
// else
// {
// setMinimumWidth(50);
// setMaximumWidth(100);
// }
}
uiAxis::AXISTYPE uiAxis::getAxisType()
{
return m_axisType;
}
void uiAxis::setMinInterval( double value )
{
m_minInterval = value;
m_hasMinInterval = true;
}
void uiAxis::setBoundary( int left int right int top int bottom )
{
m_left = left;
m_right = right;
m_top = top;
m_bottom = bottom;
}
void uiAxis::getBoundary( int& left int& right int& top int& bottom )
{
left = m_left;
right = m_right;
top = m_top;
bottom = m_bottom;
}
void uiAxis::setAxisText( QString txt )
{
m_axisText = txt;
}
void uiAxis::onMinMaxChanged( double minValue double maxValue )
{
setScop(minValue maxValue);
update();
}
void uiAxis::setTextVisible( bool val )
{
m_textVisible = val;
update();
}
void uiAxis::setAxisTextVisible( bool val )
{
m_axisVisible = val;
update();
}
QList uiAxis::getNPos()
{
return m_nPos;
}
QList uiAxis::getDPos()
{
return m_dPos;
}
void uiAxis::generateAxis()
{
double isMinMax = 1; // 如果是min if (m_maxValue isMinMax = -1;
else if(m_maxValue==m_minValue)
return; //
if(m_axisType == BOTTOM_AXIS || m_axisType == TOP_AXIS)
axisLength = width() - m_left - m_right;
else
axisLength = height() - m_top - m_bottom;
if (m_isAutoScale) // 如果自动取值的话
calcAutoScale();
else
calcSettedScale();
if (dDelta ==0)
return;
float posStart = (dStart-m_minValue)* axisLength/(m_maxValue-m_minValue);
switch (m_axisType)
{
case LEFT_AXIS:
m_pStart = QPointF(width()-m_right posStart); // 左坐标轴的刻度与右侧对齐
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11117 2013-05-06 12:07 uiAxis.cpp
文件 3477 2013-05-06 12:09 uiAxis.h
----------- --------- ---------- ----- ----
14594 2
- 上一篇:Fireworks cs5 SN
- 下一篇:腾讯通飞鸽传书插件ipmsgplugin
相关资源
- Qt的卡拉OK效果
- Qt双滑块QxtSpanSlider测试代码
- QT 开启线程接收串口数据并由主线程
- QT皮肤界面
- 画图软件qt实现
- QT调用有道翻译API_在线英汉词典
- MainWindowAndQml.rar
- qtcharts实现在UI界面绘制图形
- Qt+Opencv实现四步相移
- 使用Qt实现TCP中客户端和服务器的交互
- Qt纯代码记事本.zip
- QT实战,利用定时器QTimer实现图片的移
- draw_qwidget.zip
- QT实现多人屏幕共享系统.rar
- DrawBorad.tar.xz
- 笔趣阁小说器
- QT串口通信实例62216
- qt_opengl_obj.zip
- 基于Qt实现的多人聊天
- 基于QT的三连棋井字棋游戏
- QT自定义风格qss得日历
- Qt动态进度条
- 用QT5写简单的串口调试工具
- QT实现摄像头采集图像并截图
- qt下人脸识别
- Qt自定义皮肤
- QT(5.6) 实现IP地址输入控件
- QT实现图片的二值化与灰度化
-
QT4 xm
l与QTableWidget的结合,QTableWid - QWidget加载QML界面,并通过信号槽交互
评论
共有 条评论