Регулировка толщины QPen при масштабировании QGraphicsView?
Одна удивительная особенность QGraphicsView
это его способность масштабировать себя с содержимым сцены (фактически, каждый QGraphicsItem вставлен в сцену). QPixmap
что я правильно вставил шкалы, что означает, что если я предоставлю коэффициент масштабирования 4x4 с этим:
view->scale(4,4);
Pixmap увеличен, как я хочу сделать.
Но это не тот случай, когда я привык рисовать; они нацелены на окружение растровых изображений, которые я рисую на сцене, и независимо от масштабного коэффициента, они сохраняют толщину 1 вместо - я думаю - 4.
Я искал документацию обо всех этих вещах, пытаясь выяснить точное назначение "косметической ручки", но мне все еще не удается сделать мой прямоугольник более толстым.
Последнее уведомление: у меня есть обычай QGraphicsItem
и QPen, который используется для рисования прямоугольника, создается на лету в
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
метод.
Это имеет значение?
Заранее благодарю и извиняюсь за недостаток опыта / знаний в области Qt и в алгоритмах рисования...
1 ответ
Неважно, где вы создаете экземпляр QPen.
Ширина QPen по умолчанию равна 0. Это специальное значение, которое означает, что косметика имеет значение true, а ширина фактически равна 1. Поэтому, если вы не хотите, чтобы перо было косметическим, вы должны установить желаемую ширину. Вам также может понадобиться установить косметическое значение в false.
Вот простой пример:
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsView view;
QGraphicsScene scene;
QGraphicsRectItem *item1 = scene.addRect(20, 20, 20, 20);
QGraphicsRectItem *item2 = scene.addRect(50, 20, 20, 20);
QPen pen1, pen2;
pen1.setWidth(5);
pen2.setWidth(5);
pen1.setCosmetic(true);
pen2.setCosmetic(false);
item1->setPen(pen1);
item2->setPen(pen2);
view.setScene(&scene);
view.scale(4, 4); // both rects are the same size, but one a has wider pen
view.show();
return a.exec();
}