Hallo,
habe folgenden Code:
wie kann ich das flakkern weg bekommen und wie muss der Algo aussehen, um den Button in seiner Größe zu ändern?
den unteren linken knubbel habe ich keine Probleme, aber mit den restlichen ...
Für Hilfe bin ich sehr dankbar
habe folgenden Code:
wie kann ich das flakkern weg bekommen und wie muss der Algo aussehen, um den Button in seiner Größe zu ändern?
den unteren linken knubbel habe ich keine Probleme, aber mit den restlichen ...
Für Hilfe bin ich sehr dankbar
Code:
#include <QApplication>
#include <QPushButton>
#include <QPainter>
#include <QMouseEvent>
#include <QWidget>
QWidget *designer = NULL;
class TMyButton : public QPushButton
{
public:
TMyButton(QWidget *parent) : QPushButton(parent)
{
setMouseTracking(true);
FMouseDown = false;
};
private:
bool FMouseDown;
int FDownMode;
QRect leftUp;
QRect leftDown;
QRect rightUp;
QRect rightDown;
int oldX;
int oldY;
protected:
virtual void paintEvent(QPaintEvent *event)
{
QPushButton::paintEvent(event);
leftUp = QRect(0,0,4,4);
leftDown = QRect(0,height()-4,4,4);
rightUp = QRect(width()-4,0,4,4);
rightDown = QRect(width()-4,height()-4,4,4);
QPainter painter(this);
QBrush b(QColor(0,0,0));
painter.fillRect(0,0,4,4,b);
painter.fillRect(0,height()-4,4,4,b);
painter.fillRect(width()-4,0,4,4,b);
painter.fillRect(width()-4,height()-4,4,4,b);
}
virtual void mousePressEvent(QMouseEvent *event)
{
FMouseDown = true;
oldX = x();
oldY = y();
}
virtual void mouseReleaseEvent(QMouseEvent *event)
{
FMouseDown = false;
FDownMode = false;
}
virtual void mouseMoveEvent(QMouseEvent *event)
{
int x = event->pos().x();
int y = event->pos().y();
if (leftUp.contains(x, y))
{
FDownMode = 1;
setCursor(Qt::SizeFDiagCursor);
}
else if (leftDown.contains(x, y))
{
FDownMode = 4;
setCursor(Qt::SizeBDiagCursor);
}
else if (rightUp.contains(x, y))
{
FDownMode = 2;
setCursor(Qt::SizeBDiagCursor);
}
else if (rightDown.contains(x, y))
{
FDownMode = 3;
setCursor(Qt::SizeFDiagCursor);
} else {
if (!FMouseDown)
{
FDownMode = 0;
setCursor(Qt::ArrowCursor);
}
}
if (FMouseDown)
{
if (FDownMode == 3)
resize(x,y);
else if (FDownMode == 4)
{
resize(oldX-x,height());
move(x,oldY);
}
}
}
};
TMyButton *Pusher;
int main(int argc, char **argv)
{
QApplication app(argc,argv);
designer = new QWidget;
designer->show();
Pusher = new TMyButton(designer);
Pusher->resize(50,30);
Pusher->move(100,100);
Pusher->show();
return app.exec();
}