#include "progressbar.h"
int main(int argc, char * argv[])
{
QApplication app(argc, argv);
ProgressBar *m_slider = new ProgressBar (Qt::Horizontal);
m_slider->show();
return app.exec();
}
#include "progressbar.h"
ProgressBar::ProgressBar(Qt::Orientation orientation, QWidget *parent) :
QSlider(parent)
{
setOrientation(orientation);
}
void ProgressBar::mouseReleaseEvent (QMouseEvent* event)
{
if (event->button() == Qt::LeftButton)
{
event->ignore();
double k = ((double)event->x())/((double)width());
int a = k*(maximum());
setValue(a);
}
}
#ifndef PROGRESSBAR_H
#define PROGRESSBAR_H
class QMouseEvent;
class ProgressBar : public QSlider
{
Q_OBJECT
public:
explicit ProgressBar(Qt::Orientation, QWidget *parent = 0);
signals:
void pbValueChanged(int);
protected:
void mouseReleaseEvent ( QMouseEvent* event );
};
#endif // PROGRESSBAR_H
SOURCES += \
main.cpp \
progressbar.cpp
HEADERS += \
progressbar.h
наверное, рекурсия в слоте
void ProgressBar::mouseReleaseEvent (QMouseEvent* event)
Нет. Event вызывается лишь раз.
class ProgressBar: ...
{
bool m_bMouseEventInProcess;
};
ProgressBar::ProgressBar(...):...
{
m_bMouseEventInProcess=false;
}
void ProgressBar::mouseReleaseEvent (QMouseEvent* event)
{
if(m_bMouseEventInProcess)return;
m_bMouseEventInProcess=true;
if (event->button() == Qt::LeftButton)
{
...
}
m_bMouseEventInProcess=false;
}
Форум был недоступен, когда я понял, что я понял не то )) Рекурсии неоткуда взяться в показанном коде, но она всё же имеется где-то
Похоже это бага Qt. Такое наблюдается только в Qt 4.6.3 на линуксе. В Qt 4.5.0 на винде такого не наблюдается.
Кто-нибудь может проверить?
http://slil.ru/29559702
всё правильно работает, только если щёлкнуть в какое нибудь место он передвигается, потом примерно через секунду ещё немного передвигается(выравнивается относительно мыши).
Qt 4.6.3 + Linux openSuSE. Бага есть. Ползунок сперва перемещается к месту клика, а затем уходит к краю.
Tux-oid, при создании сообщения подчищай код, чтобы он был более компактен, старайся сводить к минимуму пустые строки.
По оформлению сообщений читай тут: http://www.forum.crossplatform.ru/index.php?showtopic=1455
WXP SP3
Qt 4.7.0
- такая же фигня, ползунок выравнивается слева от курсора после окончания движения. Но не уползает никуда - один раз дёрнулся и всё
тему разделил: http://www.forum.crossplatform.ru/index.php?showtopic=5412
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)