Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

Описание класса QRect
[модуль QtCore]

Класс QRect описывает прямоугольник на плоскости, используя целочисленную точность. Далее...

 #include <QRect>

Открытые функции

Связанные не-члены


Подробное описание

Класс QRect описывает прямоугольник на плоскости, используя целочисленную точность.

Обычно прямоугольник выражается через верхний-левый угол и размер. Размер (ширина и высота) QRect'а всегда эквивалентен математическому прямоугольнику, который формирует основу для его рисования.

QRect может быть сконструирован с помощью задания целых координат left, top, width и height, или из QPoint и QSize. Следующий код создаёт два идентичных прямоугольника.

 QRect r1(100, 200, 11, 16);
 QRect r2(QPoint(100, 200), QSize(11, 16));

Существует и третий конструктор, который создаёт QRect используя координаты верхнего-левого и нижнего-правого углов, но мы не рекомендуем вам использовать его. Обоснование: по историческим причинам, значения, возвращаемое функциями bottom() и right(), отклоняются от истинного значения нижнего-правого угла прямоугольника.

Класс QRect предоставляет коллекцию функций, которые возвращают различные координаты прямоугольника, и позволяют манипулировать им. QRect также предоставляет функции, чтобы перемещать прямоугольник относительно различных координат. В дополнение, есть функция moveTo(), которая перемещает прямоугольник, перенося его верхний-левый угол в заданные координаты. В качестве альтернативы, функция translate() перемещает прямоугольник на заданное смещение относительно текущей позиции, а функция translated() возвращает сдвинутую копию этого прямоугольника.

Функция size() возвращает размеры прямоугольника в виде QSize. Размеры могут быть так же получены раздельно, используя функции width() и height(). Для работы с размерами используются функции setSize(), setWidth() или setHeight(). Альтернативно, размер может быть изменён применением функций установки координат прямоугольника, например, setBottom() или setRight().

Функция contains() говорит, находится ли заданная точка внутри прямоугольника или нет, а функция intersects() возвращает true если этот прямоугольник пересекается с заданным прямоугольником. Класс QRect также предоставляет функцию intersected(), которая возвращает прямоугольник пересечения, и функцию united(), которая возвращает прямоугольник, который охватывает заданный прямоугольник и этот:

intersected()united()

Функция isEmpty() возвращает true если left() > right() или top() > bottom(). Заметьте, что пустой прямоугольник недействительный: Функция isValid() возвращает true если left() <= right() и top() <= bottom(). Нулевой прямоугольник (isNull() == true), с другой стороны, имеет и ширину и высоту установленные в 0.

Заметьте, что в силу связи с QRect и QRectF тоже определён, пустой QRect определен по существу тем же самым способом как QRectF.

В заключение, объект QRect может быть выведен в поток так же просто как и сравниваться.

Отрисовка

Когда используется рисовальщик (painter) со сглаживанием, граничная линия QRect будет отрисована симметрично по обоим сторонам граничной линии математического прямоугольника. Но, когда используется не сглаженный рисовальщик(по умолчанию) применяются другие правила.

Затем, когда отрисовка осуществляется с помощью карандаша шириной в один пиксель, граница QRect'а будет отрисовываться правее и ниже границы математического прямоугольника.

Когда отрисовка осуществляется с помощью карандаша шириной в два пикселя, грница будет разделена по середине математическим прямоугольником. Это будет иметь место всякий раз, когда карандаш установлен в четное число пикселей, в то время как рисование с помощью карандаша с нечёетным количеством пикселей, дополнительный пиксель будет рисоваться правее и ниже границы математического прямоугольника, как в случае с одним пикселем.

Логическое представлениеПеро шириной в один пиксель
Перо шириной в два пикселяПеро шириной в три пикселя

Координаты

Класс QRect предоставляет коллекцию функций, которые возвращают различные координаты прямоугольника, и позволяют манипулировать им. QRect также предоставляет функции, чтобы перемещать прямоугольник относительно различных координат.

Например, функции left(), setLeft() и moveLeft(), как пример: left() возвращает координату x левого края прямоугольника, setLeft() устанавливает левый край прямоугольника в заданную кординату x (она может изменить ширину, но никогда не изменяет правый край прямоугольника), а moveLeft() перемещает весь прямоугольник горизонтально, оставляя левый край прямоугольника в заданной координате x и его размер не изменяется.

Заметьте, что по историческим причинам значения, возвращаемые функциями bottom() и right(), отклоняются от истинного нижнего-правого угла прямоугольника: Функция right() возвращает left() + width() - 1, а функция bottom() возвращает top() + height() - 1. Та же ситуация для точки, возвращаемой вспомогательной функцией bottomRight(). В дополнении, координаты x и y функций topRight() и bottomLeft(), соответственно, содержат некоторое отклонение от истинных правого и нижнего краёв.

Мы рекомендуем вам использовать x() + width() и y() + height(), чтобы найти истинный нижний-правый угол, и избегать использования функций right() и bottom(). Другое решение - использовать QRectF: Класс QRectF определяет прямоугольник на плоскости используя точность плавающей запятой для координат, и функции QRectF::right() и QRectF::bottom() возвращают правую и нижнюю координаты.

Также возможно добавить смещение к координатам этого прямоугольника, используя функцию adjust(), также как и получить новый прямоугольник основанный на корректировке оригинального, используя функцию adjusted(). Если ширина и/или высота отрицательны, то используйте функцию normalized(), чтобы получить прямоугольник, у которого углы поменяны местами.

В дополнение, QRect предоставляет функцию getCoords(), которая извлекает позицию верхнего-левого и нижнего-правого углов прямоугольника, и функцию getRect(), которая извлекает верхний-левый угол, ширину и высоту. Используйте функции setCoords() и setRect(), чтобы работать с координатами и размерами прямоугольника в одном ключе.

Смотрите также QRectF и QRegion.


Описание функций-членов

QRect::QRect ()

Конструирует пустой прямоугольник.

Смотрите также isNull().

QRect::QRect ( const QPoint & topLeft, const QPoint & bottomRight )

Конструирует прямоугольник с заданными углами topLeft и bottomRight.

Смотрите также setTopLeft() и setBottomRight().

QRect::QRect ( const QPoint & topLeft, const QSize & size )

Конструирует прямоугольник с заданным углом topLeft и заданным размеромsize.

Смотрите также setTopLeft() и setSize().

QRect::QRect ( int x, int y, int width, int height )

Конструирует прямоугольник с координатами (x, y), в качестве его верхнего-левого угла и заданными шириной (width) и высотой (height).

Смотрите также setRect().

void QRect::adjust ( int dx1, int dy1, int dx2, int dy2 )

Добавляет dx1, dy1, dx2 и dy2 к имеющимся координатам прямоугольника, соответственно.

Смотрите также adjusted() и setRect().

QRect QRect::adjusted ( int dx1, int dy1, int dx2, int dy2 ) const

Возвращает новый прямоугольник с dx1, dy1, dx2 и dy2 добавленными к имеющимся координатам прямоугольника, соответственно.

Смотрите также adjust().

int QRect::bottom () const

Возвращает Y-координату нижнего края прямоугольника.

Заметьте, что по историческим причинам эта функция возвращает top() + height() - 1; используйте y() + height(), чтобы получить истинную Y-координату.

Смотрите также setBottom(), bottomLeft(), и bottomRight().

QPoint QRect::bottomLeft () const

Возвращает позицию нижнего левого угла прямоугольника. Заметьте, что по историческим причинам эта функция возвращает QPoint(left(), top() + height() - 1).

Смотрите также setBottomLeft(), bottom(), и left().

QPoint QRect::bottomRight () const

Возвращает позицию нижнего правого угла прямоугольника.

Заметьте, что по историческим причинам эта функция возвращает QPoint(left() + width() -1, top() + height() - 1).

Смотрите также setBottomRight(), bottom(), и right().

QPoint QRect::center () const

Возвращает центральную точку прямоугольника.

Смотрите также moveCenter().

bool QRect::contains ( const QPoint & point, bool proper = false ) const

Возвращает true, если заданная точка point находится внутри или на краю прямоугольника, в противном случае возвращает false. Если proper равен true, эта функция вернёт true только если заданная точка point находится внутри прямоугольника (т.е., не на краю).

Смотрите также intersects().

bool QRect::contains ( int x, int y, bool proper ) const

Это перегруженная функция, предоставленная для удобства.

Возвращает true, если точка (x, y) находится внутри или на краю прямоугольника, в противном случае возвращает false. Если proper равен true, эта функция вернёт true только если точка полностью находится внутри прямоугольника (не на краю).

bool QRect::contains ( int x, int y ) const

Это перегруженная функция, предоставленная для удобства.

Возвращает true, если точка (x, y) находится внутри этого прямоугольника, в противном случает возвращает false.

bool QRect::contains ( const QRect & rectangle, bool proper = false ) const

Это перегруженная функция, предоставленная для удобства.

Возвращает true, если заданный прямоугольник rectangle находится внутри этого прямоугольника. в противном случает возвращает. Если proper равен true, эта функция вернёт true только если прямоугольник rectangle полностью находится внутри этого прямоугольника (не на краю).

void QRect::getCoords ( int * x1, int * y1, int * x2, int * y2 ) const

Извлекает позицию верхнего левого угла прямоугольника в *x1 и *y1, и позицию нижнего правого угла в *x2 и *y2.

Смотрите также setCoords() и getRect().

void QRect::getRect ( int * x, int * y, int * width, int * height ) const

Извлекает позицию верхнего левого угла прямоугольника в *x и *y, и его размеры в *width и *height.

Смотрите также setRect() и getCoords().

int QRect::height () const

Возвращает высоту прямоугольника.

Смотрите также setHeight(), width(), и size().

QRect QRect::intersected ( const QRect & rectangle ) const

Возвращает пересечение этого прямоугольника и заданного прямоугольника rectangle. Заметьте, что r.intersected(s) эквивалентно r & s.

Эта функция была введена в Qt 4.2.

Смотрите также intersects(), united(), и operator&=().

bool QRect::intersects ( const QRect & rectangle ) const

Возвращает true, если этот прямоугольник пересекается с заданным прямоугольником rectangle (т.е., существует как минимум один пиксель, который находится внутри обоих прямоугольников), в противном случае возвращает false.

Прямоугольник пересечения может быть получен, используя функцию intersected().

Смотрите также contains().

bool QRect::isEmpty () const

Возвращает true, если прямоугольник пустой; в противном случае возвращает false.

Пустой прямоугольник имеет left() > right() или top() > bottom(). Пустой прямоугольник не является действительным (i.e., isEmpty() == !isValid()).

Используйте функцию normalized(), чтобы получить прямоугольник, у которого углы поменяны местами.

Смотрите также isNull(), isValid(), и normalized().

bool QRect::isNull () const

Возвращает true, если прямоугольник нулевой, в противном случае возвращает false.

Нулевой прямоугольник имеет и ширину и высоту установленные в 0 (т.е., right() == left() - 1 и bottom() == top() - 1). Нулевой прямоугольник также является пустым, и, следовательно, недействительным.

Смотрите также isEmpty() и isValid().

bool QRect::isValid () const

Возвращает true, если прямоугольник действительный; в противном случае возвращает false.

Действительный прямоугольник имеет left() < right() и top() < bottom(). Заметьте, что нетривиальные операции подобные пересечению не определены для недействительных прямоугольников. Действительный прямоугольник - не пустой (т.е., isValid() == !isEmpty()).

Смотрите также isNull(), isEmpty(), и normalized().

int QRect::left () const

Возвращает X-координату левого края прямоугольника. Эквивалентно x().

Смотрите также setLeft(), topLeft(), и bottomLeft().

void QRect::moveBottom ( int y )

Перемещает прямоугольник вертикально, перенося нижний край прямоугольника в заданную координату y. Размер прямоугольника не изменяется.

Смотрите также bottom(), setBottom(), и moveTop().

void QRect::moveBottomLeft ( const QPoint & position )

Перемещает прямоугольник, перенося нижний левый угол в заданную позицию position. Размер прямоугольника не изменяется.

Смотрите также setBottomLeft(), moveBottom(), и moveLeft().

void QRect::moveBottomRight ( const QPoint & position )

Перемещает прямоугольник, перенося нижний правый угол в заданную позицию position. Размер прямоугольника не изменяется.

Смотрите также setBottomRight(), moveRight(), и moveBottom().

void QRect::moveCenter ( const QPoint & position )

Перемещает прямоугольник, перенося нижний левый угол в заданную позицию position. Размер прямоугольника не изменяется.

Смотрите также center().

void QRect::moveLeft ( int x )

Перемещает прямоугольник горизонтально, перенося левый край прямоугольника в заданную координату x. Размер прямоугольника не изменяется.

Смотрите также left(), setLeft(), и moveRight().

void QRect::moveRight ( int x )

Перемещает прямоугольник горизонтально, перенося правый край прямоугольника в заданную координату x. Размер прямоугольника не изменяется.

Смотрите также right(), setRight(), и moveLeft().

void QRect::moveTo ( int x, int y )

Перемещает прямоугольник, перенося верхний левый угол в заданную позицию (x, y). Размер прямоугольника не изменяется.

Смотрите также translate() и moveTopLeft().

void QRect::moveTo ( const QPoint & position )

Это перегруженная функция, предоставленная для удобства.

Перемещает прямоугольник, перенося верхний левый угол в заданную позицию position.

void QRect::moveTop ( int y )

Перемещает прямоугольник вертикально, перенося верхний край прямоугольника в заданную координату y. Размер прямоугольника не изменяется.

Смотрите также top(), setTop(), и moveBottom().

void QRect::moveTopLeft ( const QPoint & position )

Перемещает прямоугольник, перенося верхний левый угол в заданную позицию position. Размер прямоугольника не изменяется.

Смотрите также setTopLeft(), moveTop(), и moveLeft().

void QRect::moveTopRight ( const QPoint & position )

Перемещает прямоугольник, перенося верхний правый угол в заданную позицию position. Размер прямоугольника не изменяется.

Смотрите также setTopRight(), moveTop(), и moveRight().

QRect QRect::normalized () const

Возвращает нормализованный прямоугольник; т.е., прямоугольник, который имеет неотрицательную ширину и высоту.

Если width() < 0 функция меняет местами левый и правый углы, и она меняет местами верхний и нижний углы, если height() < 0.

Смотрите также isValid() и isEmpty().

int QRect::right () const

Возвращает X-координату правого края прямоугольника.

Заметьте, что по историческим причинам эта функция возвращает left() + width() - 1; используйте x() + width(), чтобы получить истинную X-координату.

Смотрите также setRight(), topRight(), и bottomRight().

void QRect::setBottom ( int y )

Устанавливает нижний край прямоугольника в заданную координату y. Может изменить высоту, но никогда не изменит верхний край прямоугольника.

Смотрите также bottom() и moveBottom().

void QRect::setBottomLeft ( const QPoint & position )

Устанавливает нижний левый угол прямоугольника в заданную позицию position. Может измениться размер прямоугольника, но правый верхний его угол не перемещается.

Смотрите также bottomLeft() и moveBottomLeft().

void QRect::setBottomRight ( const QPoint & position )

Устанавливает нижний правый угол прямоугольника в заданную позицию position. Может измениться размер прямоугольника, но левый нижний его угол не перемещается.

Смотрите также bottomRight() и moveBottomRight().

void QRect::setCoords ( int x1, int y1, int x2, int y2 )

Устанавливает координаты верхнего левого угла прямоугольника в (x1, y1), и координаты нижнего правого угла в (x2, y2).

Смотрите также coords(), getCoords(), и setRect().

void QRect::setHeight ( int height )

Устанавливает высоту прямоугольника в заданную высоту height. Нижний край изменяется, а верхний нет.

Смотрите также height() и setSize().

void QRect::setLeft ( int x )

Устанавливает левый край прямоугольника в заданную координату x. Может изменить ширину, но никогда не изменит правый край прямоугольника.

Эквивалентно setX().

Смотрите также left() и moveLeft().

void QRect::setRect ( int x, int y, int width, int height )

Устанавливает координаты верхнего левого угла прямоугольника в (x, y), и его размер в в заданные width и height.

Смотрите также rect(), getRect(), и setCoords().

void QRect::setRight ( int x )

Устанавливает правый край прямоугольника в заданную координату x. Может изменить ширину, но никогда не изменит левый край прямоугольника.

Смотрите также right() и moveRight().

void QRect::setSize ( const QSize & size )

Устанавливает размер прямоугольника в заданный размер size. Верхний левый угол не перемещается.

Смотрите также size(), setWidth(), и setHeight().

void QRect::setTop ( int y )

Устанавливает верхний край прямоугольника в заданную координату y. Может изменить высоту, но никогда не изменит нижний край прямоугольника.

Эквивалентно setY().

Смотрите также top() и moveTop().

void QRect::setTopLeft ( const QPoint & position )

Устанавливает верхний левый угол прямоугольника в заданную позицию position. Может измениться размер прямоугольника, но правый нижний его угол не перемещается.

Смотрите topLeft() и moveTopLeft().

void QRect::setTopRight ( const QPoint & position )

Устанавливает верхний правый угол прямоугольника в заданную позицию position. Может измениться размер прямоугольника, но левый нижний его угол не перемещается.

Смотрите также topRight() и moveTopRight().

void QRect::setWidth ( int width )

Устанавливает ширину прямоугольника в заданную ширину width. Правый край изменяется, а левый нет.

Смотрите также width() и setSize().

void QRect::setX ( int x )

Устанавливает левый край прямоугольника в заданную координату x. Может изменить ширину, но никогда не изменит правый край прямоугольника.

Эквивалентно setLeft().

Смотрите также x(), setY(), и setTopLeft().

void QRect::setY ( int y )

Устанавливает верхний край прямоугольника в заданную координату y. Может изменить высоту, но никогда не изменит нижний край прямоугольника.

Эквивалентно setTop().

Смотрите также y(), setX(), и setTopLeft().

QSize QRect::size () const

Возвращает размер прямоугольника.

Смотрите также setSize(), width(), и height().

int QRect::top () const

Возвращает Y-координату верхнего края прямоугольника. Эквивалентно y().

Смотрите также setTop(), topLeft(), и topRight().

QPoint QRect::topLeft () const

Возвращает позицию верхнего левого угла прямоугольника.

Смотрите также setTopLeft(), top(), и left().

QPoint QRect::topRight () const

Возвращает позицию верхнего правого угла прямоугольника.

Заметьте, что по историческим причинам эта функция возвращает QPoint(left() + width() -1, top()).

Смотрите также setTopRight(), top(), и right().

void QRect::translate ( int dx, int dy )

Перемещает прямоугольник на dx вдоль оси X и на dy вдоль оси Y, относительно текущей позиции. Положительные значения перемещают прямоугольник вправо и вниз.

Смотрите также moveTopLeft(), moveTo(), и translated().

void QRect::translate ( const QPoint & offset )

Это перегруженная функция, предоставленная для удобства.

Перемещает прямоугольник на offset.x() вдоль оси X и на offset.y() вдоль оси Y, относительно текущей позиции.

QRect QRect::translated ( int dx, int dy ) const

Возвращает копию прямоугольника, которая сдвинута (translated) на dx вдоль оси X и на dy вдоль оси Y, относительно текущей позиции. Положительные значения перемещают прямоугольник вправо и вниз.

Смотрите также translate().

QRect QRect::translated ( const QPoint & offset ) const

Это перегруженная функция, предоставленная для удобства.

Возвращает копию прямоугольника, которая сдвинута (translated) на offset.x() вдоль оси X и на offset.y() вдоль оси Y, относительно текущей позиции.

QRect QRect::united ( const QRect & rectangle ) const

Возвращает охватывающий прямоугольник этого прямоугольника и заданного прямоугольника rectangle.

Эта функция была введена в Qt 4.2.

Смотрите также intersected().

int QRect::width () const

Возвращает ширину прямоугольника.

Смотрите также setWidth(), height(), и size().

int QRect::x () const

Возвращает X-координату левого края прямоугольника. Эквивалентно left().

Смотрите также setX(), y(), и topLeft().

int QRect::y () const

Возвращает Y-координату верхнего края прямоугольника. Эквивалентно top().

Смотрите также setY(), x(), и topLeft().

QRect QRect::operator& ( const QRect & rectangle ) const

Возвращает пересечение этого прямоугольника и заданного прямоугольника rectangle. Возвращает пустой прямоугольник, если пересечения не существует.

Смотрите также operator&=() и intersected().

QRect & QRect::operator&= ( const QRect & rectangle )

Пересечение этого прямоугольника с заданным прямоугольником rectangle.

Смотрите также intersected() и operator&().

QRect QRect::operator| ( const QRect & rectangle ) const

Возвращает охватывающий прямоугольник этого прямоугольника и заданного прямоугольника rectangle.

Смотрите также operator|=() и united().

QRect & QRect::operator|= ( const QRect & rectangle )

Объединение этого прямоугольника с заданным прямоугольником rectangle.

Смотрите также united() и operator|().


Связанные не-члены

Q_CORE_EXPORT_INLINE operator!= ( const QRect & r1, const QRect & r2 )

Это перегруженная функция, предоставленная для удобства.

Возвращает true, если прямоугольники r1 и r2 отличаются, в противном случае возвращает false.

QDataStream & operator<< ( QDataStream & stream, const QRect & rectangle )

Это перегруженная функция, предоставленная для удобства.

Записывает заданный прямоугольник rectangle в заданный поток stream и возвращает ссылку на поток.

Смотрите также Формат операторов QDataStream.

Q_CORE_EXPORT_INLINE operator== ( const QRect & r1, const QRect & r2 )

Это перегруженная функция, предоставленная для удобства.

Возвращает true, если прямоугольники r1 и r2 равны, в противном случае возвращает false.

QDataStream & operator>> ( QDataStream & stream, QRect & rectangle )

Это перегруженная функция, предоставленная для удобства.

Читает прямоугольник из потока stream в заданный прямоугольник rectangle и возвращает ссылку на поток.

Смотрите также Формат операторов QDataStream.


Copyright © 2008 Trolltech Торговые марки
Qt 4.3.5