Резюме
Я использую QT 4.8.7 под SUSE 64 бит
У меня есть 2 QGraphicsItem с различной частотой обновления. Но когда я вызываю update () для одного из них, paint () вызывается для них обоих. Таким образом, реальная закуска для обоих предметов - это наивысший общий коэффициент двух напитков.
Я хотел бы иметь независимые вызовы методов paint () ...
Я понятия не имею, откуда возникает эта проблема и как ее решить (я пытался вызвать QGraphicsItem :: update (QRectF (// item_dimensions //)) "вместо QGraphicsItem :: update (), но проблема та же)
Упрощенный код
toto.hpp
class Toto : public QObject, QGraphicsItem
{
Q_OBJECT
public:
Toto(QString name)
{
m_name = name;
}
void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget* = NULL)
{
QTextStream(stdout) << "paint : " << m_name << endl;
//other stuff
}
public slots:
void updateSlot()
{
QTextStream(stdout) << "\nupdate : " << m_name << endl;
QGraphicsItem::update();
}
private:
QString m_name;
}
main.cpp
Toto1 = new Toto("toto_1");
Toto2 = new Toto("toto_2");
QTimer *timer1 = new QTimer(500);
QTimer *timer2 = new QTimer(2000);
connect(timer1, SIGNAL(timeout()), toto1, SLOT(updateSlot()));
connect(timer2, SIGNAL(timeout()), toto2, SLOT(updateSlot()));
timer1->start();
timer2->start();
Ожидаемый результат:
toto_1 update
toto_1 paint
toto_1 update
toto_1 paint
toto_1 update
toto_1 paint
toto_1 update
toto_1 paint
toto_2 update
toto_2 paint
toto_1 обновляется каждые 500 мс, toto_2 обновляется каждые 2000 мс
Что я получу:
toto_1 update
toto_1 paint
toto_2 paint
toto_1 update
toto_1 paint
toto_2 paint
toto_1 update
toto_1 paint
toto_2 paint
toto_1 update
toto_1 paint
toto_2 paint
toto_2 update
toto_1 paint
toto_2 paint
toto_1 и toto_2 обновляются каждые 500 мс
Спасибо за вашу помощь!