Всеп Привет!!!
Помогите решить задачу!!! заключаеться в следуещем,,, Есть MainWindow в него накиданы по стандарту ЦентралВинджет, доквиджет, тулбарс...
Теперь загружаю изображение, в централВиджет, и при помощи несложных вычыслений нахожу координаты окружностей на изображении.
Далее собственно вопрос: - Теперь когда координаты окружностей на картинке найдены надо их выделеть, например кругом (или елепсом, не имеет впрочем разницы) и что-бы это выдиление например в виде елепса МИГАЛО.
Пошел по пути, мигание - это таймеры, а рисование - QPaint, как-бы с таймером розобрался. Алгоритм таков: - Произвел вычисление---получил координаты окружностей---запустил (единожды) первый тамймер1---заскочил в слот обработки первго таймера и прорисовал елипс с данными координатами и запустил (единожды) таймер2---далее в слот обработки таймера2 и перерисовал елипс (поменять цвет например или размеры) далее запустил таймер1..... и так далее, думаю должен получится этакий ефект мигания!!!!
Помогите разобраться собственно с QPaint а то че-то ничего не ресует, ну и как вам такой подход по таймерам не слишком наивный и безобразный, может как - то можна такую процедуру инным путем????
Вот сам код!!!!!
ImageViewer::ImageViewer()
{
imageLabel = new QLabel;
imageLabel->setBackgroundRole(QPalette::Base);
imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
imageLabel->setScaledContents(true);
scrollArea = new QScrollArea;
scrollArea->setBackgroundRole(QPalette::Dark);
scrollArea->setWidget(imageLabel);
setCentralWidget(scrollArea);
timer1 = new QTimer(this);
connect(timer1, SIGNAL(timeout()), this, SLOT(do_timer1()));
timer2 = new QTimer(this);
connect(timer2, SIGNAL(timeout()), this, SLOT(do_timer2()));
TreeWidget();
createActions();
createMenus();
setWindowTitle(tr("Image Viewer"));
resize(500, 400);
}
void ImageViewer::open() // непосредственно загрузка картинки
{
QString fileName = QFileDialog::getOpenFileName(this,tr("Open File"), QDir::currentPath());
if (!fileName.isEmpty()) {
QImage image(fileName);
if (image.isNull()) {
QMessageBox::information(this, tr("Image Viewer"), tr("Cannot load %1.").arg(fileName));
return;
}
imageLabel->setPixmap(QPixmap::fromImage(image));
scaleFactor = 1.0;
printAct->setEnabled(true);
fitToWindowAct->setEnabled(true);
updateActions();
if (!fitToWindowAct->isChecked())
imageLabel->adjustSize();
}
}
void ImageViewer::find_circle_on_image() //теперь сам алгоритм где получаю координаты
{
// ....
.......
... //
timer1->setSingleShot(true);
timer1->start(1000);
}
void ImageViewer::do_timer1()
{
QPainter painter(&image);
QRect rect(Contors.center.x, Contors.center.y, 80, 60);
painter.drawRect(rect);
painter.end();
qDebug() << "test - Timer1 work:";
timer2->setSingleShot(true);
timer2->start(1000);
}
void ImageViewer::do_timer2()
{
QPainter painter(&image);
QRect rect(Contors.center.x, Contors.center.y, 100, 80);
painter.drawRect(rect);
painter.end();
qDebug() << "test - Timer2 work:";
timer1->setSingleShot(true);
timer1->start(1000);
}
Заранее спасибо Господа!!!!!