Russian Qt Forum
Ноябрь 23, 2024, 03:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как дорисовать точку?  (Прочитано 9351 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #15 : Январь 10, 2015, 00:00 »

В paintEvent прогонять массив в цикле и сменять на каждой итерации ручку не хочу. Это извращение.
Как тогда?
пройдись сперва по четным индексам, а потом — по нечетным (ну или наоборот)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #16 : Январь 10, 2015, 00:37 »

Old тут уже вмешиваются мои мысли о функционале - вполне возможно надо будет как то классифицировать точки в будущем, иметь возможность отменить последнюю и прочая Улыбающийся Следовательно нужен будет массив данных, пусть и отрисовывающийся единожды Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Январь 10, 2015, 10:12 »

Кстати о птичках - рисовать адаптивно можно
Код
C++ (Qt)
#include <QtWidgets>
 
class MyWidget : public QWidget {
public:
MyWidget( QWidget * parent = 0 ) : QWidget(parent)
{
setAttribute(Qt::WA_NoSystemBackground);
}
 
void paintEvent( QPaintEvent * )
{
static int theCount = 0;
static const int NUM_COLOR = 3;
static const Qt::GlobalColor theColor[NUM_COLOR] = { Qt::red, Qt::green, Qt::blue };
static const QPoint delta(15, 15);
 
QPainter painter(this);
painter.setPen(QColor(theColor[theCount]));
theCount = (theCount + 1) % NUM_COLOR;
QPoint pt = mapFromGlobal(QCursor::pos());
QRect R(pt - delta, pt + delta);
painter.drawEllipse(R);
}
 
void mousePressEvent( QMouseEvent * )
{
update();
}
 
};
 
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
 
MyWidget * win = new MyWidget;
win->setWindowTitle("Click to paint");
win->show();
 
return app.exec();
}
 
Во всяком случае с пятеркой работает на OSX и Вындоуз
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.159 секунд. Запросов: 23.