• 7310阅读
  • 3回复

关于创建可自由拉伸方框的问题 [复制链接]

上一主题 下一主题
离线guojunxin
 
只看楼主 倒序阅读 楼主  发表于: 2009-10-16
— 本帖被 XChinux 从 论坛公告栏 移动到本区(2010-02-23) —
各位牛人们好,首先向各位牛人致敬,小弟有个简单的问题没能解决,希望各位牛人帮忙。我想做个可任意拉伸的方框,但做不出来,希望牛人们帮忙
离线guojunxin
只看该作者 1楼 发表于: 2009-10-23
没人回答,自己顶下,这是我的做法,调试没问题。
#ifndef PAINTLABEL_H
#define PAINTLABEL_H

#include <QtGui>

class paintLabel : public QPushButton
{
    Q_OBJECT
public:
    paintLabel(QWidget *parent=0,Qt::WindowFlags f=0);
protected:
    void paintEvent(QPaintEvent *event);
    void resizeEvent(QResizeEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
private:
    bool startDrag;
    int startPos;
    int endPos;

};

#endif // PAINTLABEL_H
#include "paintlabel.h"

paintLabel::paintLabel(QWidget *parent,Qt::WindowFlags f)
        : QPushButton(parent)
{
   resize(50,50);
   startDrag=false;
   update();
}
void paintLabel::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setPen(Qt::red);
    painter.drawRect(0,0,width()-1,height()-1);

}
void paintLabel::resizeEvent(QResizeEvent *event)
{
    QPushButton::resizeEvent(event);
    update();
}
void paintLabel::mousePressEvent(QMouseEvent *event)
{
    if(event->pos().y()<=height()+1&&event->pos().y()>=height()-5)
    {
      QApplication::setOverrideCursor(Qt::SizeVerCursor);
      startPos=height();
      startDrag=true;
    }
}
void paintLabel::mouseReleaseEvent(QMouseEvent *event)
{
    QApplication::restoreOverrideCursor();
    startDrag=false;
}
void paintLabel::mouseMoveEvent(QMouseEvent *event)
{
    if(startDrag)
    {
    endPos=event->pos().y();
    int dy=endPos-startPos;
    resize(50,height()+dy);
    startPos=endPos;
   }
}
离线318065268
只看该作者 2楼 发表于: 2010-02-22
这个东西我假期做了一个,用的GrahpicsItem做的。调整大小什么的是很容易的,从实用性角度讲,主要有两个麻烦点:1、鼠标放在item的四个角落里时鼠标的样式改变为调整大小的箭头;2、你的item在拖拽的时候不能离开可视区域。
Email  rsail@126.com(私人邮箱)
QQ:   318065268
离线solarcollect
只看该作者 3楼 发表于: 2010-05-06
你的item在拖拽的时候不能离开可视区域
solar collector http://www.solar-water-heater-china.com/
快速回复
限100 字节
 
上一个 下一个