Russian Qt Forum

Qt => Вопросы новичков => Тема начата: libertas от Март 25, 2014, 13:45



Название: Нарисовать линию из точек
Отправлено: libertas от Март 25, 2014, 13:45
Здравствуйте, помогите пожалуйста разобраться как в MainWindow нарисовать линию из точек определенного цвета.
Я знаю есть метод paintEvent() и класс QPainter, но как их связать и нарисовать, я не понимаю..(

Спасибо.


Название: Re: Нарисовать линию из точек
Отправлено: gil9red от Март 25, 2014, 14:48
Что то типо такого :)
Код:
class MainWindow : public QMainWindow
{
...

protected:
   void paintEvent( QPaintEvent *event )
   {
        QPainter painter( this );
        for ( int i = 20; i < 10; i++ )
             painter.drawPoint( QPoint( i, 20 ) );
   }
};


Название: Re: Нарисовать линию из точек
Отправлено: libertas от Март 25, 2014, 15:40
Спасибо большое. Стало понятно.
А еще не подскажете, я создал класс MainWindow в qt creatore и у меня в mainwindow.h такая запись:

Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#endif // MAINWINDOW_H


а в самом объявлении класса:

Код:
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
...

Так вот, что значат define и Q_OBJECT?



Название: Re: Нарисовать линию из точек
Отправлено: vizir.vs от Март 25, 2014, 16:15
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#endif // MAINWINDOW_H

Это называется стражи включения, они не позволяют дважды включать один и тот же файл, во избежании мультиопределения. http://ru.wikipedia.org/wiki/Include_guard (http://ru.wikipedia.org/wiki/Include_guard)

Про Q_OBJECT хорошо ответили здесь http://stackoverflow.com/questions/1368584/qt-question-what-does-the-q-object-macro-do-why-do-all-qt-objects-need-this-ma (http://stackoverflow.com/questions/1368584/qt-question-what-does-the-q-object-macro-do-why-do-all-qt-objects-need-this-ma)
Например Q_OBJECT позволяет объявлять сигналы/слоты.


Название: Re: Нарисовать линию из точек
Отправлено: libertas от Март 25, 2014, 16:26
Код:
Это называется стражи включения, они не позволяют дважды включать один и тот же файл, во избежании мультиопределения.

Спасибо, но не очень понял.
Наш хедер включается в cpp файл как:

include "mainwindow.h"

Допустим подключаем ещё:
include "test.h"?, который в свою очередь тоже содержит "mainwindow.h"
и как директива препроцессору сработает?


Название: Re: Нарисовать линию из точек
Отправлено: libertas от Март 25, 2014, 18:10
Код:
Это называется стражи включения, они не позволяют дважды включать один и тот же файл, во избежании мультиопределения. http://ru.wikipedia.org/wiki/Include_guard

Разобрался! Спасибо большое!